2012-11-09 1 views
0

Tout d'abord. J'apprécie l'aide les gars!Définition du pointeur de nœud sur null

C'est le problem.Trying pour définir l'un des bords de la liste à null

list[i].getAttachedNode(j) = 0; 

Ceci est l'erreur.

Prj3.cpp:165:34: error: lvalue required as left operand of assignment 

Ceci est ma liste de déclenchement.

Node list[47]; 

Ceci est l'implémentation de Noeud associé.

Node* Node::getAttachedNode(int direction) {return attachedNode[direction];} 

[b] Voici le bloc de son contenu dans

for(int i = 0; i<48; i++) 
     { 
     for(int j = 0; j<6; j++) 
     { 
     string info = g.returnInfo(i,j); 

      switch(j) 
       { 
      case 0: 
      list[i].setNodeName(info); 
      break; 
      case 1: 
      if(info.compare(null) == 0) 
      {list[i].getAttachedNode(j) = 0;} 
      break; 
       } 
     } 
    } 
+5

Vous devriez retourner un 'noeud * &'. –

+0

permettez-moi de voir la déclaration de la liste – dchhetri

+0

@SethCarnegie: Vous devriez en faire une réponse ... –

Répondre

1

L'erreur est assez clair.

list[i].getAttachedNode(j) 

est une valeur r, ne peut donc pas être assigné à. Il suffit d'avoir getAttachedNode retourner une référence:

Node*& Node::getAttachedNode(int direction) {return attachedNode[direction];} 
+0

Merci cela corrigé. Cela vous dérangerait-il de m'expliquer un peu? Im un peu difficile sur ma visualisation de cela. Comme, Node * renvoie l'adresse de la mémoire. So Node * & renvoie le pointeur de nœud réel? Est-ce exact. – TheNodeCommode

+0

@TheNodeCommode '* &' signifie * référence à un pointeur *. – 0x499602D2

+0

@TheNodeCommode: Renvoyer 'Node *' dit "prenez ce pointeur et donnez une copie à l'appelant". Ensuite, vous essayez de modifier la copie qui n'était pas ce que vous vouliez faire. En retournant 'Node * & ', vous dites" prenez ce pointeur et donnez-le à l'appelant ". Ensuite, vous pouvez le changer avec succès. – Bill

Questions connexes