2012-11-09 72 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