我用C ++编写了一个类。在其中我写道:
class Node{
private:
Node*m[200]=NULL;
};
(这是课程的一部分)但我收到错误。我该怎么做才能定义一个指针数组,NULL?
答案 0 :(得分:5)
要使所有200个指针为空,请写:
class Node
{
Node *m[200] = {};
};
这仅在C ++ 11及更高版本中有效。
答案 1 :(得分:2)
为了完整起见,如果您不具备C ++ 11支持,则可以在构造函数中值初始化数组。这具有零初始化元素的效果:
class Node
{
public:
Node() : m() {}
private:
Node* m[200];
};
另请注意,初始化原始Node
实例的值具有相同的效果WRT零初始化元素:
Node n = {}; // Node must be aggregate, as in original code.
答案 2 :(得分:1)
由于你正在编写C ++,我建议避免使用原始数组并使用std::vector
代替(或std::array
如果你有C ++ 11)。
在pre-C ++ 11中,您需要在构造函数中初始化您的成员:
class Node
{
public:
Node() : m(200) {}
private:
std::vector<Node*> m;
};
当您构建m
时,这将初始化200
以保留Node
空指针。