c++ - 指向对象数组的指针的初始化

标签 c++ class oop pointers

我打算初始化一个指向“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/

相关文章:

c++ - 每个循环中的语句是否在每次迭代中执行?

C++ 如何使用 std::bind/std::function 引用模板函数

python - 从类到字典的变量到 Python 中的函数的键和值

c++ - 在 C++ 中的另一个类的方法中使用实例的变量

c++ - C++中的大文件读取错误

c++ - C++代码说明

另一个类操作中的 C++ 指针类

java - 为什么重写方法总是从子类的对象调用?

python - 如何在Python中创建嵌套的生成器结构?

design-patterns - OO 设计/模式 - 胖模型与事务脚本?