簡體   English   中英

在C ++中為指針數組定義NULL

[英]Defining NULL for an array of pointers in C++

我用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空指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM