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



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

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

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

要使所有200个指针为空,请写入:

class Node
{
    Node *m[200] = {};
};

这仅在C++11及更高版本中有效。

为了完整性,如果您没有C++11支持,您可以在构造函数中初始化值。这具有零初始化元素的效果:

class Node
{
public:
  Node() : m() {}
private:
  Node* m[200];
};

还要注意,初始Node的值初始化实例具有与WRT零初始化元素相同的效果:

Node n = {}; // Node must be aggregate, as in original code.

由于您正在编写C++,我建议您避免使用原始数组,而使用std::vector(如果您有C++11,则使用std::array)。

在C++11之前的版本中,您需要在构造函数中初始化您的成员:

class Node
{
public:
    Node() : m(200) {}
private:
    std::vector<Node*> m;
};

这将在构造Node时初始化m以保持200空指针。

最新更新