我想初始化一个数组。没有编译错误,但是当我运行程序时,它显示第一个 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
)
关于c++ - 初始化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719731/