2017-10-06 2 views
-5

alors je suis un en-tête de classe comme celui-cic Membre d'accès de référence

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

    Node(); 
    ~Node(); 
} 

Comme je comprends mon code, je crée un tableau de références au nœud-objets.
Maintenant, dans le fichier C++, je crée un nœud fils et je l'enregistre dans mon tableau fils. Ensuite, je veux accéder à la valeur variable des enfants créés:

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

mais je ne peux pas lire la valeur des enfants et je ne comprends pas pourquoi? Pendant l'exécution, une erreur de violation d'accès mémoire se produit - 0xC0000005 se produit.

+2

Veuillez publier un échantillon de code complet, fonctionnel et minimal. –

+4

Vous créez un tableau de pointeurs, pas une liste de références. Et 'children [i] = Node();' ne fonctionnera pas parce que 'Node()' n'est pas un pointeur. – VTT

+1

Si vous ne postez pas votre implémentation de 'node()' il y a très peu de choses que nous pouvons vous dire. – Arrrow

Répondre

1

Comme mentionné dans les commentaires, vous créez un tableau de pointeurs, pas une liste de références. Donc, une façon de rendre le travail est la suivante:

#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; 
} 

Mais il est difficile de deviner exactement ce que vous recherchez. Pouvez-vous élaborer dans votre OP?