Я ищу, чтобы провести вектор объектов, из которых будут подклассы.C++ Vector подклассов, используя его для перегрузки istream/ostream
Я думал, что я был бы в состоянии сделать это, объявив вектор указателей на BaseClass (Такие, как vector<BaseClass*> db
), а затем объявить его как Подкласс делать что-то вроде db.pushback(new subclass)
(Мой пример в ссылке ниже является сенсорным разные, но по тем же направлениям);
Возможно ли хранить несколько подклассов в этом смысле. Или мне нужно определить новый вектор для каждого субкласса? В приведенном примере есть только 1, но реалистично в моей программе четыре.
Если это так, то в моем перегруженном >> в SubClass1 будет динамическое кастинг типа для работы в BaseClass, чтобы вызвать перегруженный друг друга >> в BaseClass?
Edit:
К сожалению, я не совсем ясно, в моей второй половине этого вопроса. Я должен был расшириться.
У меня есть программа, которая должна принимать входные данные и распространять их в соответствующих классах и подклассах. Он должен принимать вход как Cin >> class;
, и в этом случае я перегрузил оператор >>.
Однако, когда я определяю данные в качестве подкласса (строки с 34 по 39 и строка 44), он, как представляется, называет его как BaseClass, а не подклассом. Затем он вызывает функцию друга, определенную в Baseclass по строке 10, а не в строке 21.
Я не совсем уверен, где я ошибаюсь.
В идеале результат должен быть
Printing:Data
X = 1
Y = 2
1) Можно, и это точка полиморфизма –
Да, вы можете использовать 'зЬй :: VECTOR' в этом манера. Что касается остальной части вашего вопроса, не совсем понятно, что вы пытаетесь выполнить. – Chad
Извините. Я попытаюсь очистить его сейчас. Будет ли редактироваться в вопрос –