将指针的私有数组初始化为null

时间:2014-02-22 23:43:18

标签: c++ arrays pointers private

我正在开发一个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标准,如果这有任何区别的话。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果此数据成员是私有的,则可以在构造函数中或在初始化它的某个成员函数中初始化它。

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

例如

orderlist.fill( nullptr );