我打算初始化一个指向“Port.h”类对象数组的指针。为此,首先初始化“Port”类型的指针,然后为数组的每个元素调用此类的构造函数。
int main(){
Port *ports;
for (int m = 0; m < M; m++){
// Initialize
ports[m] = Port(***PARAMETERS***);
// ...
}
// ...
}
运行代码时出现以下错误:
错误 C4700:使用了未初始化的局部变量“ports”
最佳答案
在开始将指针加载到数组中之前,您需要初始化数组本身:
Port *ports = new Port[M];
但是,您的类缺少默认构造函数,因此上述声明将不起作用。您可以创建一个指针数组,并像这样使用它:
Port **ports = new Port*[M];
将数据放入指针数组时,需要使用操作符new
:
ports[m] = new Port(***PARAMETERS***);
// ^^^
由于 ports
现在持有指针,您需要使用指针语法来访问 Port
的成员:
ports[m]->memberFunction(param1, param2); // Note the use of '->' in place of a dot '.'
一旦你完成了对数组的操作,你需要删除
个别Port
对象,然后删除[]
ports
数组以避免内存泄漏:
for (int m = 0 ; m != M ; m++) {
delete ports[m];
}
delete[] ports;
注意:现在有很多代码专门用于内存管理。为避免必须编写此代码,请使用标准集合和智能指针。
关于c++ - 指向对象数组的指针的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796829/