正在初始化指向null的专用指针数组

Initializing a private array of pointers to null

本文关键字:专用 指针 数组 null 初始化      更新时间:2023-10-16

我正在做一个C++项目,该项目基本上使用几个类来模拟零售环境;到目前为止,一切都很顺利,但我使用C++的时间还不长,我对这个数组应该如何工作有点困惑。

//Customer.h
private:
std::array< CustomerOrder *, 3 > orderList;

基本上,数组在Customer.h文件中声明为private,但Customer.h和Customer.cpp文件也提供了一个方法

addOrder(CustomerOrder *c)

用于向数组添加CustomerOrder指针(CustomerOrder是另一个类)。根据我的经验,该方法的逻辑非常简单:使用for循环查找包含空指针的第一个索引,然后将指针插入该索引。

问题是,这涉及到首先将数组初始化为空指针,我不确定应该如何或在哪个文件中这样做。由于数组是私有的,我认为我必须在.h文件中使用类似的东西来初始化它

for(size_t i = 0; i < orderList.size(); ++i)
orderlist[i] = nullptr;

orderlist[3] = {nullptr}

必须在.h文件中执行此操作吗?有没有一种更可靠的方法来初始化数组?

作为参考,我使用的是C++11标准,如果这有什么不同的话。

如果这个数据成员是私有的,那么它可以在构造函数中初始化,也可以在初始化它的某个成员函数中初始化。

要将数组的所有元素设置为nullptr,可以使用类std::array的成员函数fill

例如

orderlist.fill( nullptr );

使用构造函数,可执行代码不应该在h文件中
并且:不要在3大小的阵列上执行orderlist[3] = {nullptr}
它只有0、1、2的独立作品。循环要好得多。