指针,自定义类,第11节错误



尝试设计一个简单的链表。节点声明如下:

class Node
{
public:
friend class CRevList;
Node() {m_next = 0;  m_prev = 0;}
Node(const T &t) {m_payload = t;  m_next = 0;  m_prev = 0;}
T Data() {return m_payload;}
const T Data() const { return m_payload; }
private:
Node    *m_next;
Node    *m_prev;
T       m_payload;
};

所以m_next指向列表中的下一项,m_payload保存它的值。M_head是这样声明的:

private:
Node    m_head;             // Head node

不完整的函数,将一个新节点放在列表的前面,有效载荷为t:

void PushFront(const T &t)
{
  Node *newnode = Node(t);
  m_head.m_next = newnode;
}

上面应该声明一个负载为t的新节点,并将m_head的下一个节点设置为新节点。我还没有将它链接到列表的其余部分,只是想让至少1个节点工作。

int GetFirst() //get value of first item in list.
{
  Node *firstnode = m_head.m_next;
  int payload = firstnode->m_payload;
  return payload; //m_head.m_next->m_payload;
}

这是试图获得列表中的第一个节点,获取它的有效载荷,并返回…这给出了一个segfault 11错误。

我很确定这是我如何做指针的问题,我对它们有一个大致的了解,但是阅读文档后,我仍然不确定如何处理这个错误。

谢谢!

在Jonathan Wakely的帮助下解决:

PushFront必须为

Node *newnode = new Node(t);

另外,使用

访问私有变量时出现问题
int payload = nextnode->m_payload;

我需要使用公共方法

int payload = nextnode->Data();

相关内容

最新更新