指针,自定义类,第11节错误
Pointers, Custom Classes, Seg Fault 11s
尝试设计一个简单的链表。节点声明如下:
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();
相关文章:
- C++11 中好友模板类的视觉C++错误
- 我将 Makefile 更改为 C++11 版本,但仍然收到列表初始值设定项错误
- C++ Visual Studio 错误:名称后跟'::'必须是类或命名空间名称 (DirectX 11)
- 使用 C++11 时列表中出现编译错误
- main.cpp(11):错误 C2059:语法错误:"字符串"
- C++ 分段错误:11 错误,同时编码将两个数字相加的链接列表
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 可中断线程类 C++11 - 遇到错误?
- 使用长变量时分割故障(11)错误
- 在 C++11 段错误中基于范围的 for 循环,但不是常规 for 循环
- IOS 目标链接 cocoa 堆栈库,该库写入 C++11 标准错误
- GDB 7.11启动错误
- 指针,自定义类,第11节错误
- Windows 8上的Dev c++ 5.11出现错误答案
- 指定lambda捕获时的c++ 11编译错误
- C++11 模板错误消息:"cannot call member function without object"
- 带有std::move和std::make_move_iterator的C++11编译错误
- 带有两个运算符的C++11模糊错误(一个左值-第二个右值).底部的
- C++11 编译器错误,后跟 decltype(var) 后跟内部类型的"var"
- c++11 enable_if错误-模板参数重新声明