我刚刚开始学习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的返回值,该函数不返回任何内容,从而导致此错误。

07-28 08:56