2012-11-09 70 views
0

首先。我欣賞幫助傢伙!將節點指針設置爲空

這是設置列表的優勢之一爲null

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

這是錯誤的problem.Trying。

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

這是我的列表刪除。

Node list[47]; 

這是attachedNode實現。

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

並[b]下面是其包含在塊

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

您應該返回'Node *&'。 –

+0

讓我看看清單的聲明 – dchhetri

+0

@SethCarnegie:你應該回答這個問題...... –

回答

1

誤差是相當清楚的:

list[i].getAttachedNode(j) 

是r值,所以它不能爲分配給。只需要getAttachedNode返回參考:

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

謝謝你解決了這個問題。你介意給我一點解釋嗎?我對這件事的可視化有點挑剔。就像Node *返回內存地址一樣。那麼Node *會返回實際的節點指針?那是對的嗎。 – TheNodeCommode

+0

@TheNodeCommode'*&'表示*指針*的引用。 – 0x499602D2

+0

@TheNodeCommode:返回'Node *'說:「拿這個指針並給調用者一個副本」。然後,您嘗試修改不是您想要的副本。返回'Node *&'說「帶這個指針並把它給給調用者」。然後,您可以成功更改它。 – Bill