在C ++中为指针数组定义NULL

时间:2015-03-17 03:51:46

标签: c++ pointers

我用C ++编写了一个类。在其中我写道:

class Node{
private:
Node*m[200]=NULL;
};

(这是课程的一部分)但我收到错误。我该怎么做才能定义一个指针数组,NULL?

3 个答案:

答案 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空指针。