MyList



  • Hi,
    ich probiere gerade in c++ eine einfach verkettete Liste zu programmieren.
    Hab eigentlich alles fertig, doch es gibt ein Problem.
    Ich hab 2 Klassen: "Node.h" und "MyList.h"
    In der Klasse Node steht z.B.:

    Node(string n) {
      name = n;
      next = NULL;
    }
    
    void setName(string n) {
      name = n;
    }
    

    In der main Methode rufe ich dann folgendes auf:

    myList l = myList();
    
      Node d1 = Node("ID1");
      Node d2 = Node("ID2");
    
      l.addNode(d1);
      Node x = l.getCurrentNode();
      cout << x.getName() << endl;
    
      l.addNode(d2);
      x = l.getCurrentNode();
      x.setName("Test");
      cout << x.getName() << endl;
    

    Jetzt zu meinen Problem!
    In dem DOS-Fenster wird mir folgendes ausgegeben:
    (so ein komisches Smiley Gesicht?)
    Test

    Warum wird dieser Smiley anstatt "ID1" ausgegeben?



  • zeig mal die funktionen addnode, getname und getcurrent



  • Hallo!

    Versuch bei der Funktion getCurrentNode() einen Zeiger auf das Objekt node zurückzugeben. Dann hast du die Adresse und kannst direkt auf das Objekt zugreifen. Das müsste klappen. Eine andere Möglichkeit wäre, wenn du einen Copy-konstruktor schreibst.



  • Wahrscheinlich liegt hier der Fehler, das kommt in meiner Klasse "myList.h" vor:

    private:
      int  size;
      Node *current; 
    
    public:
    myList() {
      size = 0;
      current = NULL;
    }
    
    void addNode(Node n) {
      if(size == 0) {
        current = &n;
        size++;
      }
      else {
        (*current).setNext(n); 
        current = &n;
        size++;
      }
    }
    
    Node getCurrentNode() {
      return (*current);
    }
    

Anmelden zum Antworten