使用类的链表中的分段错误。我的方法正确吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用类的链表中的分段错误。我的方法正确吗?相关的知识,希望对你有一定的参考价值。
我需要使用类来创建链接列表。我正在调试,但似乎无法修复分段错误。
这与类的使用有关吗?以前,我只使用结构,但目前无法按照指令进行操作。还是我的代码中缺少某些内容?我在构造函数中缺少什么吗?
我留下了代码中出现细分错误的注释。
palabra.h文件
#include <iostream>
using namespace std;
class Palabra{
public:
int p_id;
string p_nombre;
int p_valor;
Palabra *next;
Palabra *prev;
//Metodos
Palabra(int id, string nombre);
void printNombre();
int calcularValorPalabra();
void agregarSiguiente(Palabra *);
void eliminar();
void buscar();
};
extern Palabra primeraPalabra;
extern Palabra ultimaPalabra;
extern Palabra palabraTemp;
Palabra.cpp文件
Palabra primeraPalabra(0,"");
Palabra ultimaPalabra(0, "");
Palabra palabraTemp(0, "");
Palabra::Palabra(int id, string nombre)
{
p_id = id;
p_nombre = nombre;
p_valor = calcularValorPalabra();
next = NULL;
prev = NULL;
}
void Palabra::agregarSiguiente(Palabra *nuevaPalabra)
{
palabraTemp = primeraPalabra;
if(primeraPalabra.p_nombre == "") //I assing the first node of the linked list, I check if the Name is empty
{
primeraPalabra = *nuevaPalabra;
ultimaPalabra = *nuevaPalabra;
}
else while (&palabraTemp != NULL)
{
if(palabraTemp.next == NULL)
{
palabraTemp.next = nuevaPalabra; //Right here I get the error when debugging.
break;
}
palabraTemp = *palabraTemp.next;
}
}
main.cpp
int main()
{
Palabra prototypo(1,"proto");
Palabra prototypo1(2,"proto2");
primeraPalabra.agregarSiguiente(&prototypo);
cout << primeraPalabra.p_nombre;
primeraPalabra.agregarSiguiente(&prototypo1);
cout << primeraPalabra.next->p_nombre;
return 0;
}
答案
我注意到在此代码块中,您可能最终会取消引用空指针!
if(palabraTemp.next == NULL)
{
palabraTemp.next = nuevaPalabra; //Right here I get the error when debugging.
break;
}
palabraTemp = *palabraTemp.next;
如果您的变量palabraTemp.next
为NULL
,则说明*palabraTemp.next
为越野车
以上是关于使用类的链表中的分段错误。我的方法正确吗?的主要内容,如果未能解决你的问题,请参考以下文章