return auf einen Klasse



  • Hallo,
    ich soll den Dijkstra Algorithmus implementieren. Da es nicht dynamisch sein muss, habe ich 7 Objekte der Klasse Ort. Diese besitzen eine Routing-Tabelle, in der drin steht, welches Node sie ansprechen sollen, wenn sie zu Node X wollen. Dabei habe ich ein Problem:

    ort a;
    ort b;
    ...
    
    ort getOrt(char ich)
    {
      switch(ich)
      {
       case 'a': return a;
       case 'b': return b;
        ...
      };
    }
    

    wenn ich diese Funktion nun aufrufe bekomme ich ein Nichtaufgelöstes externes Symbol. Könnt ihr mir auf die Sprünge helfen, wie ich dieses Problem lösen kann?
    Ansonsten muss ich in der Routing Tabelle eine Referenz auf das Objekt speichern...

    MFG Dominik

    EDIT:
    der Quellcode zum holen des Objektes:

    ort ort::getNextNode(ort ziel)
    {
     return getOrt(ziel.getIch()); //getIch liefert den char entsprechend des Objektes, also objekt a liefert 'a'. 
    // In der KLasse ist ein längerer Funktionsaufruf, liefert aber natürlich einen char
    }
    


  • ein nicht aufgelöstes exrens symbol?

    ja, welches denn?
    aus dem code kann man das nicht ablesen



  • Dijkstra2.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall ort::ort(void)" (??0ort@@QAE@XZ)
    Debug/Dijkstra2.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise



  • 🙂

    also, das hat damit nichts zu tun...

    schreib ma einen konstruktor für ort
    alá

    ort::ort()
    {
    }

    einfach mit in die ort-datei rein, ferigt



  • Hmm... das hatte ich eigentlich in der KLasse selber als Inliner,
    aber so funktioniert es.
    Vielen Dank^^



  • Dominik_Fe schrieb:

    Hmm... das hatte ich eigentlich in der KLasse selber als Inliner, ...

    Wirklich ? (also auch mit den schweiften Klammern ?)
    Eine reine Deklaration ("ort();") reicht nämlich nicht.

    Gruß,

    Simon2.



  • Das war mein Fehler. Ich war mir ziemlich sicher das mit den geschweiften Klammern gemacht zu haben, aber natürlich habe ich es nicht gemacht 😉

    Danke nochmal an alle, die mir geholfen haben


Anmelden zum Antworten