我有一個結構的init:C++,結構初始化多個實例
nodeBuf = new Node[num](); //num is some number of different instances of this struct
我明白,這造成我的結構的NUM實例。但我不確定如何訪問每個實例。
我試圖nodeBuf [NUM],不工作
我有一個結構的init:C++,結構初始化多個實例
nodeBuf = new Node[num](); //num is some number of different instances of this struct
我明白,這造成我的結構的NUM實例。但我不確定如何訪問每個實例。
我試圖nodeBuf [NUM],不工作
如果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; }
啊我看,有什麼理由nodeBuf [1]。名稱作品買nodeBuf [1] - >名犯規? – mugetsu
nodeBuf的類型是'Node *',但由於'E1 [E2]'是'*((E1)+(E2))'(請注意解引用),那麼nodeBuf [1]的類型爲'Node',箭頭操作符不能被使用,因爲它是'指向成員'的指針。 – lccarrasco
你應該告訴我們你是如何輸入的變量 –