簡體   English   中英

使用類的鏈表中的分段錯誤。 我的方法正確嗎?

[英]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.nextNULL ,則指令*palabraTemp.next有問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM