2012-09-01 207 views
1

我有一個結構的init:C++,結構初始化多個實例

nodeBuf = new Node[num](); //num is some number of different instances of this struct 

我明白,這造成我的結構的NUM實例。但我不確定如何訪問每個實例。

我試圖nodeBuf [NUM],不工作

+0

你應該告訴我們你是如何輸入的變量 –

回答

2

如果num > 0只有nodeBuf[0]直到nodeBuf[num -1]是有效的。如果num == 0那麼索引運算符訪問元素不是allwed(= UB)。

樣品:

 
struct Node 
{ 
    std::string name; 
}; 

void f() 
{ 
    int num = 4; 
    Node* nodeBuf = new Node[num]; 
    nodeBuf[1].name = "Test"; 
    delete[] nodeBuf; 
} 
+0

啊我看,有什麼理由nodeBuf [1]。名稱作品買nodeBuf [1] - >名犯規? – mugetsu

+0

nodeBuf的類型是'Node *',但由於'E1 [E2]'是'*((E1)+(E2))'(請注意解引用),那麼nodeBuf [1]的類型爲'Node',箭頭操作符不能被使用,因爲它是'指向成員'的指針。 – lccarrasco