Я хочу инициализировать массив. Там нет ошибки компиляции, но когда я запускаю программу, она показывает первый cout
тогда прекрати бегать.
Вот мой код:
class A {
string first_name ;
string last_name;
int ID;
public:
virtual void print ()=0;
};
class B :public A{
string phone_number;
.......
void print(){
........
}
};
class D{
A** a;
int size;
public:
D(){
size = 10;
a = new A *[size];
for(int i = 0 ; i<size ; i++){
a[i] = NULL;
}
}
void Add(){
for(int i = 0 ; i<size ; i++){
A * a2 = a[i];
B * b = dynamic_cast<B*>(a2);
int id;
cout<<"enter the id";
cin>>id
b->set_ID(id);
// i did the same (cout , cin statements) for the first name and last name.
b->set_first_name();
b->last_name();
}
};
Это не правильно?
Вы выделяете size
количество A*
с, но вы на самом деле не указывать эти указатели нигде. Они неинициализированы. Изменить: теперь вы просто устанавливаете их в NULL. Вы должны были бы выделить некоторые A
объекты и назначить их адреса каждому из элементов a
, Однако я не вижу веской причины для динамического выделения массива указателей — почему бы вам просто не объявить a
как A* a[10];
? (или еще лучше, используйте std::vector
или же std::array
)
Других решений пока нет …