Bezugsproblem zweier verketter Listen



  • Hallo,

    Ich habe folgendes Problem: Ich möchte eine verkette Liste schreiben, in denen einzelne Elemente enthalten sind, die ihrerseits wiederum auf eine andere verkette Liste zeigen. Die Bezeichnung dafür soll angeblich rückwärtsgerichtete Adjazenzlisten lauten. Ich habe das wie folgt programmiert:

    class firenet;
    
    class Knoten {
        //Diverse Elemente
        int MeldeLinkwert(void) { return net->Elementeaufsummieren(); }
        /*
        Anmerkung:
        Bei der Funktion Elementeaufsummieren handelt es sich um eine Funktion,
        die bestimmte integer- Werte aller zu firenet gehörenden (link-) Elemente 
        aufsummiertund zurückgibt. Wenn ich die Funktion weglasse, wird das 
        Programm fehlerfrei kompiliert.
        */
    private:
        ...
        firenet* net;
    };
    
    class KnotenListe {
        ...
    private:
        ...
        Knoten* Listenkopf;
        Knoten* Listenende;
        Knoten* akKnoten;
    };
    
    class link {
        ...
    private:
        ...
        Knoten* Herkunftsknoten;
    };
    
    class firenet {
        ...
    private:
        ...
        link* Listenkopf;
        link* Listenende;
        link* akLink;
    };
    

    Wenn ich das Programm jetzt kompiliere erhalte ich eine Fehlermeldung der Art ,,Verwendung des undefinierten Typs firenet''. Kann mir jemand sagen, wie ich das verbessern könnte? 😕 Ich stehe jetzt irgendwie auf dem Schlauch, es kann aber auch sein, dass ich nicht ganz verstanden habe, was eine ,,rückwärtsgerichtete Adjazenzliste'' ist; wenn das der Fall ist, wäre ich auch für eine Erklährung (mit Struktur) sehr dankbar.
    Jetzt schon Danke und freundliche Grüße
    Johannes



  • Versuche die Definition der Memberfunktion mal auszulagern, als inline muss sie im Headern bleiben, aber schreibe sie mal nach der Definition von firenet, villeicht hilft das. 🙂



  • um es mal konkret zu sagen :

    hier
    int MeldeLinkwert(void) { return net->Elementeaufsummieren(); }
    steht schon etwas von der klasse firenet, was der compiler an der stelle noch nicht kennt, da er erst später die deklaration der details dieser klasse liest.

    also wie gesagt immer schön separieren 🙂



  • @hardy_unreg: Und wie kann ich das besser machen?


Anmelden zum Antworten