gpt4 book ai didi

c++ - 初始化对象数组

转载 作者:行者123 更新时间:2023-11-28 07:12:48 25 4
gpt4 key购买 nike

我想初始化一个数组。没有编译错误,但是当我运行程序时,它显示第一个 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::vectorstd::array)

关于c++ - 初始化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com