Wie werden Templates der STL gelinkt?..



  • Merci für die schnelle Hilfe!
    Achso, die sind auch direkt implementiert. Ich dachte, die Implementation werde irgendwie in einer Library gehalten.
    Ich verwende VC++ 6.0. Da gibts n'Verzeichnis "include" (direkt in VC98). Ich nehme an, das sind die Header der Standard Library, oder?
    Allerdings kann ich da nirgends ein Klassen-Template (z.B. vector) finden..



  • Also beim VC++7 liegt in include die Datei 'vector' - welche den Sourcecode von std::vector enthält.



  • ok, habs gesehen 🙂
    thx für die Hilfe!



  • @durito

    Du hast aber teilweisse recht !!!

    Die meisten STL container und pointer etc sind einfache templates ... die sind im header definiert.
    Aber streams !!! sind etwas kmplexer und sind BS spezifisch ... das waer recht uncool wenn die Grundfunktionen im Header implementiert werden. Deshalb gibts fuer jedes BS ne lib die gelinkt werden muss. die iostream lib.

    Beim STL Port z.b. kannst du einstellen, ob du die vom BS gelieferte nimmst, oder die Vom STLPort uebersetzt und nimmst.

    Ueblicherweise braucht man die nicht expliziet in den Projekteinstellungen configurieren, sondern im header kann man ueber pragmas ebenfalls das linken von bibs anstossen. Und das geht auch weit besser da, wenn man abhaengig von der Umgebung (BS oder so) unterschiedliche libs gelinkt haben will ...

    Ciao ...



  • durito schrieb:

    nicht nur definiert, sondern auch implementiert sein

    Was ist denn der Unterschied zwischen einer Definition und einer Implementation?



  • CarstenJ schrieb:

    durito schrieb:

    nicht nur definiert, sondern auch implementiert sein

    Was ist denn der Unterschied zwischen einer Definition und einer Implementation?

    In ner Definition sagst Du nur, wie die Klasse aussehen soll, welche Funktionen sie hat, etc.
    In der Implementation werden dann die eigentlichen Funktion ausprogrammiert.

    @RHBaum:
    Merci für die Info 🙂



  • In ner Definition sagst Du nur, wie die Klasse aussehen soll, welche Funktionen sie hat, etc.

    Nein. Das ist die Deklaration.



  • Ich denke du verwechselst das mit einer Deklaration.

    Guck mal hier:
    http://www.c-plusplus.net/forum/viewtopic.php?t=66179&highlight=deklaration+definition



  • declare schrieb:

    In ner Definition sagst Du nur, wie die Klasse aussehen soll, welche Funktionen sie hat, etc.

    Nein. Das ist die Deklaration.

    Das ging ja schnell 🙂
    Jup, ich meinte eigentlich auch Deklaration.. Naja, ist ja auch schon Freitagabend... 😃



  • Nein, ihr verwechselt es immer noch.

    declare schrieb:

    In ner Definition sagst Du nur, wie die Klasse aussehen soll, welche Funktionen sie hat, etc.

    Nein. Das ist die Deklaration.

    Es ist eine Definition. Siehe FAQ.



  • Jo, du hast natürlich Recht. Ich schließe mich dem mal an:

    Naja, ist ja auch schon Freitagabend...



  • deklarieren:
    kundtun, proklamieren, behaupten, anmelden

    class Foo; // Hiermit tue ich kund, dass es einen Typ Foo gibt
    

    definieren:
    abgrenzen

    class Foo { // Hiermit grenze ich Foo gegenüber anderne Klassen ab, indem ich ihn beschreibe
    };
    

    Ist das wirklich so schwer.


Anmelden zum Antworten