[英]Segmentation fault in a linked list using classes. Am I doing the method correctly?
我需要使用類做一個鏈表。 我正在調試,但似乎無法修復分段錯誤。
這與類的使用有關系嗎? 以前我只使用結構,但根據指令我目前無法使用。 還是我的代碼中遺漏了什么? 我在構造函數中遺漏了什么嗎?
我留下了代碼中出現分段錯誤的注釋。
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;
}
}
主程序
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
有問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.