首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针、自定义类、段错误11

指针、自定义类、段错误11
EN

Stack Overflow用户
提问于 2015-10-04 21:06:28
回答 1查看 48关注 0票数 0

试图设计一个简单的链表。这样声明的节点:

代码语言:javascript
复制
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声明如下:

代码语言:javascript
复制
private:
Node    m_head;             // Head node

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

代码语言:javascript
复制
void PushFront(const T &t)
{
  Node *newnode = Node(t);
  m_head.m_next = newnode;
}

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

代码语言:javascript
复制
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;
}

这是试图获取列表中的第一个节点,获取它的有效负载,并返回...这会给出Seg故障11错误。

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-10-04 22:33:20

在Jonathan Wakely的帮助下解决:

PushFront需要成为

代码语言:javascript
复制
Node *newnode = new Node(t);

此外,尝试使用访问私有变量时会出现问题

代码语言:javascript
复制
int payload = nextnode->m_payload;

我需要使用public方法。

代码语言:javascript
复制
int payload = nextnode->Data();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32933820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档