[LinkedList] Was stimmt an meinem Knoten nicht?



  • Hi Forum,

    ich will für eine Adressverwaltung eine einfach verkette Liste erzeugen.
    Der Gedanke ist ja soweit ganz gut, nur verstehe ich nicht weshalb mir VC
    den folgenden Knoten nicht abnimmt:

    #include "stdafx.h"
    #include "myAdresses.h"
    #include "Node.h"
    
    class Node  
    {
    public:
        Node();
        Node(Object e);
        Node(Object e, Node n);
        virtual ~Node();
    
        Object content;
        Node nextNode;
    };
    

    VC++ meint dazu:
    nexpected 'class Node ('
    error C2238: unexpected token(s) preceding ';'
    error C2629: unexpected 'class Node ('
    error C2238: unexpected token(s) preceding ';'
    error C2146: syntax error : missing ';' before identifier 'content'
    error C2501: 'Object' : missing storage-class or type specifiers
    error C2501: 'content' : missing storage-class or type specifiers
    error C2460: 'nextNode' : uses 'Node', which is being defined [...] see definition...

    Das ich "Object" so nicht benutzen kann ist klar (soll ein CObject werden), aber
    was mache ich sonst noch falsch?

    Danke im Voraus,
    Khadgar



  • Ok, mittlerweile siehts wie folgt aus und ich hab ihn auf zwei Fehler runter:

    #include "stdafx.h"
    #include "myAdresses.h"
    #include "Node.h"
    
    class Node 
    {
    public:
        Node();
        Node(CObject e);
        Node(CObject e, Node n);
        virtual ~Node();
    
        CObject content;
        Node nextNode;
    };
    

    Jetzt beschwert VC sich folgendermaßen:
    error C2460: 'nextNode' : uses 'Node', which is being defined [...] see declaration of 'Node'
    error C2248: 'CObject::CObject' : cannot access protected member declared in class 'CObject' [..] see declaration of 'CObject::CObject'

    Kann mir dazu jemand was sagen?

    Danke,
    Khadgar

    [edit] Fehler im Source ausgebessert 😉 [/edit]

    [ Dieser Beitrag wurde am 06.07.2003 um 22:43 Uhr von Khadgar editiert. ]



  • Zu 1.
    VC liest, wie du dir denken kannst, von oben nach unten, stellt also fest, dass ein neues Objekt Node definiert wird, liest weiter und stellt fest, dass das Objekt sich selber verlangt, ohne dass es fertig definiert wurde. Somit konnte die Grösse des Objekts nicht festgestellt werden und die Kompilierung bricht ab.
    -> Umgehen mit Zeiger auf Node

    Zu 2.
    CObject ist ein Basisobjekt, welches ohne 'Drumherum' nicht existieren kann. Daher wird schon während der Kompilierung darauf geachtet.



  • Du solltest dir mal Templates anschauen. Dein Code sieht irgendwie wie Java-Code aus. :p



  • @<Schlange>:
    Drei Jahre "Java"-LK haben mich wohl deutlich gezeichnet 😉
    Aber ich gelobe Besserung 😃


Anmelden zum Antworten