我正在开发一个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标准,如果这有任何区别的话。
答案 0 :(得分:1)
使用构造函数,可执行代码不应该在h文件中
并且:不要在3个大小的数组上进行orderlist[3] = {nullptr}
它只有0,1,2的标志。循环要好得多。
答案 1 :(得分:1)
如果此数据成员是私有的,则可以在构造函数中或在初始化它的某个成员函数中初始化它。
要将数组的所有元素设置为nullptr,您可以使用类fill
的成员函数std::array
。
例如
orderlist.fill( nullptr );