|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2014, 10:41 | #1 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 60
|
Инициализация объектов класса
Есть 3 класса : один - абстрактный,базовый(Item), 2 - производных(Book,Magazine).
Пример конструктора базового класса Item Код:
Код:
Код:
Вопрос: как создать массив объектов в зависимости от начальных данных, с дальнейшей инициализацией(используя конструктор с параметрами). С одним объектом все понятно: Код:
Помогите, пожалуйста. |
09.12.2014, 11:08 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Никак не сделать то, что хочется в данном виде.
Вообще я подозреваю, что неправильно задача решается. Нужно массив, в который заносятся и книги и журналы, а не только книги или журналы. Тут нужен не массив объектов, а массив указателей на базовый класс: Item **item; item = new Item*[count]; потом запрашивать у пользователя данные во временные переменные. Когда пользователь по текущему элементу всё ввёл, уже создавать объект item[n] = new Book(...); |
09.12.2014, 11:16 | #3 | |
Пользователь
Регистрация: 18.02.2013
Сообщений: 60
|
Задание:
Цитата:
Последний раз редактировалось Stilet; 10.12.2014 в 18:57. |
|
09.12.2014, 21:58 | #4 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 60
|
Делаю так:
Код:
|
10.12.2014, 07:57 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
лучше заменить x = getchar(); на cin >> x
там свои нюансы с буферами. нужно либо перед getchar очищать буфер, чтобы запрос был именно с клавиатуры, а не какой-то хлам от предыдущих вводов с клавиатуры. Если используете cin для ввода, то везде его и используйте, так меньше подобных проблем будет. |
10.12.2014, 17:59 | #6 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 60
|
pu4koff, спасибо. Но не могли бы Вы еще мне помочь - продумать логику.
Вот,смотрите: Код:
Собственно сам вопрос : как мне прервать сам цикл for? |
10.12.2014, 18:48 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Я бы проверку на ноль сделал до свича. Сразу после ввода х. А то сейчас получается, что пользователь вводит 0, говоря, что ему больше ничего не надо, а приходится сначала вбивать данные, которые потом никуда не запишутся.
Заодно в if можно спокойно написать break, который закончит цикл, а не свич. Вывод же данных я бы вынес за цикл for, а то сейчас пользователь увидит что ввёл только при условии, что обманул и решил закончить ввод до того, как вбил указанное в самом начале число элементов. Как-то так, в общем: Код:
Последний раз редактировалось Stilet; 10.12.2014 в 18:58. |
10.12.2014, 19:49 | #8 |
Пользователь
Регистрация: 18.02.2013
Сообщений: 60
|
pu4koff, спасибо.
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не понятная проблема, адрес переменной класса у 2 объектов класса одинаков | Soeth | Общие вопросы C/C++ | 8 | 06.11.2013 05:10 |
[visual c++] инициализация статических членов класса | densvr | Помощь студентам | 0 | 10.02.2013 18:24 |
Инициализация элемента массива класса | VmanMaslov | Общие вопросы C/C++ | 10 | 15.02.2012 20:57 |
Инициализация матрицы методом класса | Jugger | Общие вопросы C/C++ | 4 | 20.10.2011 20:43 |
с++ инициализация статических елементов класса | p_alex | Помощь студентам | 5 | 25.10.2009 16:52 |