structur und classe mit template?



  • Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
    Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?



  • lord_fritte schrieb:

    Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
    Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?

    Das hat nichts mit dem Compiler zu tun.



  • lord_fritte schrieb:

    Aber ich frage mich, warum ist der C# Compier so gut Entwickelt und der C++ Compiler nicht?
    Hat Microsoft keine Lust mehr den C++ Compiler zu entwickeln/erweitern?

    Der Visual C++ - Compiler ist extrem gut entwickelt ;-).
    Das Problem liegt eig. allein bei IntelliSense und C++ Code auszuwerten ist in vielen Fällen ungleich schwerer als C# Code.
    Ich würde sagen, du solltest mal anfangen dich mit IDEs, Compilern etc. auseinandersetzen und dann kannst anfangen anfangen solche Behauptungen aufzustellen.



  • LordJaxom schrieb:

    HumeSikkins schrieb:

    wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.

    ? :p

    Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.



  • lord_fritte schrieb:

    LordJaxom schrieb:

    HumeSikkins schrieb:

    wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.

    ? :p

    Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.

    Soll das'n Witz sein? Wurde doch bereits beantwortet und Du sagtest, dass es ginge.



  • Konrad Rudolph schrieb:

    lord_fritte schrieb:

    LordJaxom schrieb:

    HumeSikkins schrieb:

    wird dir nichts anderes übrigbleiben als die Definitionen in den Header zu schreiben.

    ? :p

    Aber wie sollen die Definitionen so einer Klasse aussehen? ich habe alles mögliche versucht, es gibt nur errors.

    Soll das'n Witz sein? Wurde doch bereits beantwortet und Du sagtest, dass es ginge.

    Ja aber ich habe nicht wirklich eine Header-Definition, sondern ich habe die Klasse komplett in die Header-Datei gepackt, das ist doch eigentlich nicht sehr elegant, wie sähe denn eine Klasse Definition mit Template aus wenn ich Klasse in cpp und Definition in eine Header Datei packen möchte?



  • lord_fritte schrieb:

    Konrad Rudolph schrieb:

    Wurde doch bereits beantwortet und Du sagtest, dass es ginge.

    Ja aber ich habe nicht wirklich eine Header-Definition, sondern ich habe die Klasse komplett in die Header-Datei gepackt, das ist doch eigentlich nicht sehr elegant, wie sähe denn eine Klasse Definition mit Template aus wenn ich Klasse in cpp und Definition in eine Header Datei packen möchte?

    Darum ging es doch gerade. Sobald Du Templates verwendest, geht diese Trennung nicht: es muss die gesamte Definition in der Headerdatei stehen.



  • Und bevor du nach dem Grund fragst: Hier wurde das Thema diskutiert 😉



  • wollte mal anmerken es ist durchaus möglich die implementierung von template klassen/methoden in ne ".cpp datei" zu schreiben diese .cpp wird dann in der .h datei "included" und nicht extra wie die anderen dateien kompiliert. keine ahnung wo ich das mal gelesen habe aber es geht...

    .h datei
    deklarationen wie gewohnt
    und am ende unten:

    #ifndef USE_EXPORT_KEYWORD
       #include "deinecppdatei.cpp"
    #endif
    

    .cpp datei
    included NICHT die .h datei
    enthält "nur" die implementierung

    #ifndef USE_EXPORT_KEYWORD
       #define export /*nothing*/
    #endif
    
    //...
    //...
    export template<typename T> void meineklasse::beispiel(T t)
    {
    //...
    }
    

    wie gesagt es ist nicht schön aber bei großen .h dateien kann es durchaus übersichtlicher sein das ganze mit "includes und defines" zu lösen 🙂
    schönen abend noch



  • Man kann die Definitionen der template-Funktionen auch in
    der cpp-Datei stehen lassen (ohne sie im Header einzubinden).

    Wenn du meineklasse<int> benötigst, dann muss in die cpp-Datei

    template meineklasse<int>;
    

    und analog für jeden anderen Typ, den du benutzt.

    Quelle:
    http://www.ddj.com/cpp/184403420

    Alex


Anmelden zum Antworten