2017-10-06 139 views
-5

訪問構件,所以我得到一類報頭這樣C++的參考

class Node{ 
public: 
    Node* children[6]; 
    int value = 13; 

    Node(); 
    ~Node(); 
} 

正如我明白我的代碼,我創建一個數組引用的到節點對象。
現在在C++中 - 我創建一個子節點並將其保存在我的子數組中。然後我想訪問創建的孩子的價值變量:

Node::Node() 
{ 
    children[0] = &Node(); 
    value = children[0]->value; // ->memory access violation error 
} 

但我無法讀取孩子的價值,我不明白爲什麼? 在運行期間,內存訪問衝突錯誤 - 0xC0000005發生。

+2

請發佈一個完整的,工作的,最小的代碼示例。 –

+4

您創建了一個指針數組,而不是引用列表。並且'children [i] = Node();'不會工作,因爲'Node()'不是一個指針。 – VTT

+1

如果你不發佈你的'node()'的實現,那麼我們可以告訴你很少。 – Arrrow

回答

1

正如評論中所提到的,您正在創建一個指針數組,而不是引用列表。因此,使其工作的一種方式如下:

#include <iostream> 


class Node 
{ 
    private: 
    int private_var; 

    public: 
    void output() { std::cout << private_var << "\n"; } 
    Node *children[6]; 

    Node(int a) : private_var(a){}; 
}; 

int main() 
{ 
    Node node(1); 
    node.output(); 

    node.children[0] = new Node(2); 
    node.children[0]->output(); 

    return 0; 
} 

但是很難準確地猜出您的結果。你能否詳細說明你的OP?