ЛЛ
Леша Лоев

Инициализация массива указателей на объекты.

Здравствуйте! Подскажите пожалуйста, как инициализировать массив указателей на объекты? Я делаю так:
baseClass *pmas[2];
pmas[0] = new derivedClassA(2,3);
pmas[1] = new derivedClassB(5,6);
Затем пишу cin >> *pmas[0]; но заполняются только поля базового класса и программа прекращается, а а поля наследников нет.

Ол
Олег

> Затем пишу cin >> *pmas[0];
Ни хрена не понятно из твоего вопроса. Ты оператор >> перегрузил?

#include

class A {
int a;
public:
A(): a(0) { }
virtual void input(std::istream &i) { i >> a; };
virtual void print(std::ostream &o) { o << "a: " << a; }
};

class B: public A {
int b;
public:
B(): b(0) { }
void input(std::istream &i) { A::input(i); i >> b; };
void print(std::ostream &o) { A::print(o); o << "; b: " << b; }
};

class C: public B {
int c;
public:
C(): c(0) { }
void input(std::istream &i) { B::input(i); i >> c; };
void print(std::ostream &o) { B::print(o); o << "; c: " << c; }
};

std::istream &operator>>(std::istream &i, A &a) { a.input(i); return i; }
std::ostream &operator<<(std::ostream &o, A &a) { a.print(o); return o; }

int main() {
A *m[3];
m[0] = new A();
m[1] = new B();
m[2] = new C();
for (int c = 0; c < 3; ++c) std::cin >> *m[c];
for (int c = 0; c < 3; ++c) std::cout << "m[" << c << "]: " << *m[c] << std::endl;
}

Похожие вопросы
Срочно! Помогите решить с++!!тема указатели и массивы
Срочно помогите решить пожалуйста!! ! c++ указатели и массивы
инициализация объекта в php?
C++ Инициализация массива в функции...
Как добавить указатель на размер массива в С++
Как добавить указатель на размер трехмерного массива в С++
ПОМОГИТЕ!!!! Пожалуйста написать программу на СИ с массивами и указателями!!!! МАТРИЦА!
Java, быстрая сортировка массива объектов.
Указатели динамического массива, функции, c++
Почему размер массива жестко устанавливается при инициализации?