[英]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.