我刚刚开始学习C++
(来自Java
),并且在做任何事情时都遇到一些严重的问题:P当前,我正在尝试创建链接列表,但是由于我一直在获取“无效值而不应该被忽略”,它必须做一些愚蠢的事情。被“编译错误(我将其标记在下面的位置)。如果有人可以帮助我解决我做错的事情,我将非常感激:)
而且,我通常不习惯选择通过引用,地址或值来传递,以及通常是内存管理(当前,我在堆上声明了所有节点和数据)。
如果有人对我有任何一般性建议,我也不会抱怨:P
来自 LinkedListNode.cpp的密钥代码
LinkedListNode::LinkedListNode()
{
//set next and prev to null
pData=0; //data needs to be a pointer so we can set it to null for
//for the tail and head.
pNext=0;
pPrev=0;
}
/*
* Sets the 'next' pointer to the memory address of the inputed reference.
*/
void LinkedListNode::SetNext(LinkedListNode& _next)
{
pNext=&_next;
}
/*
* Sets the 'prev' pointer to the memory address of the inputed reference.
*/
void LinkedListNode::SetPrev(LinkedListNode& _prev)
{
pPrev=&_prev;
}
//rest of class
来自LinkedList.cpp的键控代码
#include "LinkedList.h"
LinkedList::LinkedList()
{
// Set head and tail of linked list.
pHead = new LinkedListNode();
pTail = new LinkedListNode();
/*
* THIS IS WHERE THE ERRORS ARE.
*/
*pHead->SetNext(*pTail);
*pTail->SetPrev(*pHead);
}
//rest of class
最佳答案
开头的*
*pHead->SetNext(*pTail);
*pTail->SetPrev(*pHead);
不需要。
pHead
是指向节点的指针,您可以在其上调用SetNext
方法作为pHead->SetNext(..)
并通过引用传递object
。->
具有比*
高的precedence因此,有效地尝试取消引用函数
SetNext
的返回值,该函数不返回任何内容,从而导致此错误。