Funktion mit default-Parameter



  • Hi,
    ich habe ne kurze Frage.
    Ich habe die folgende Funktion gehabt

    bool fkt (char* a, char* b, std::list <int> &contentLink);
    

    ich wollte die Funktion jetzt in meine Routine anwenden und dachte mir ich füge einfach in der Header ein Default- Parameter hinzu:

    bool fkt (char* a, char* b, std::list <int> &contentLink, XYZ* xy = NULL);
    

    und ich hab es so angewendet.

    Leider bekomme ich aber ein Linker Error 2001.

    Kann mir da jemand weiterhelfen bzw mir zeigen was ich falsch gemacht habe?

    Alexo



  • Du musst das in der .cpp auch anpassen:

    bool fkt (char* a, char* b, std::list <int> &contentLink, XYZ* xy)
    {
    // Dein Code
    }
    

    Wenn DU das schon gemacht hast compiler mal alles neu



  • Hi Knuddelbär,
    das habe ich auch gemacht. Aber funktioniert leider net.
    Die Funktion wird auch von andere Routinen bentutzt, jedoch mit den drei Parametern, könnte es daran liegen?



  • Poste mal den Linkerfehler.



  • Hast Du mal alles frisch übersetzt. Die müssen das mit dem zusätzlichen Parameter ja auch mitkriegen.



  • hier ist der fehler

    ImportFileOperation.obj : error LNK2001: unresolved external symbol "public: bool __thiscall ACISFileIO::importFile(class User *,char *,class std::list<int,class std::allocator<int> > &)" (?importFile@ACISFileIO@@QAE_NPAVUser@@PADAAV?list@HV?list@HV?alloc
    ator@H@std@@@std@@@Z)
    ../../../bin/apps/smartsketches/smartsketches_stb.dll : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.



  • Er vermisst bei der Klasse

    ACISFileIO

    Die Methode: importFile(class User *,char *,class std::list<int> &);

    Entweder nie implementiert oder die .cpp Datei aus dem Projekt gekickt.



  • Jester schrieb:

    Hast Du mal alles frisch übersetzt. Die müssen das mit dem zusätzlichen Parameter ja auch mitkriegen.

    Eigentlich müsste der Compiler alle Units die den geänderten Header verwenden neu Compiliert werden. Neucompilierung ist manchmal so wie Windows neu starten 🤡))



  • Ja, das ist doch genau die klasse die ich manipuliert habe mit diesem Default-Parameter.
    Die 3 Parameter waren schon vorhanden und ich habe noch ein Default-Parameter hinzugefügt.



  • Poste mal die Implementierung der Methode pls

    (Ich tippe auf VC, haste mal Projekt bereinigen gemacht ?)



  • warte mal, ich mache Projekt bereinigen
    aber die Compilierung braucht dann eine Stunde, das ganze Projekt ist etwas umfangreich.



  • So, kompilierung ist jetzt abgeschlossen, es LÄUFT. Danke!



  • Büddäää

    Aus reiner Interesse:

    Was mich aber Interessiert: Wie groß ist das Projekt denn etwa ?
    (Anzahl Klassen z.B.)

    1h Compilierzeit ist schon ne menge Holz... (Worauf Compilierst Du ?)



  • mal eine Frage:

    Wie kann man den ein Projekt bereinigen?



  • Projekt Bereinigen gibt es beim VC++ .

    Nicht ganz korrekt erläuitert:

    Im prinzip wird jede Übersetzungseinheit in ein .obj (Objectfile) gewandelt.

    Wenn sich an einer Übersetzungseinheit (.cpp) nichts geändert hat muss die obj nicht geändert werden. Bei der Projektbereinigung werden all diese Dateien + zusätliche "Gedächntnissdingens" gelöscht so das der Compiler alles von Grundauf neu aufbauen muss, ob sich da nun was geändert hat drann oder nicht.



  • Knuddi
    das Projekt an dem ich und einige ander arbeiten ist ca. 45 MB Code, ca. 300 Klassen.
    Ich arbeite gerade auf ein 1GH AMD.



  • Das sind Dimensionen, da fällt Heinz Hobbycoder doch der Mundwinkel ab...


Log in to reply