Template in Deklaration und Implementierung trennen



  • ja. ein gutes design muss lesbar sein,da sonst unwartbar(sorry, war gestern schon etwas müde, kam von ner lan wieder, deshalb ists vielleicht falsch rübergekommen :))



  • Sorry ich bin jetzt ein bissel durcheinander.
    Das z.B. in foo.h steht #include "foo.cpp" finde ich ja auch unschön, aber
    sonst nörgelt doch der Compiler. Also bei "normalen Klassen" muss ich das ja nicht machen, aber bei Template-Klassen leider schon. Oder kommt man irgendwie mit export und extern drumherum?
    Ich sehe leider nicht wie mir Forward-Deklarationen weiterhelfen können 😕
    Wenn z.B. in foo.cpp Methoden von der Klasse Bar aufgerufen werden, dann muss ich doch die bar.h einbinden.
    Mit dem Buch bin ich noch ganz am Anfang, da wo die Policy-classes erst vorgestellt werden. Das Wort Loki fiel erst ein einziges mal...

    Gruß Christian



  • Ich hoffe, ich habe euch nicht mit meinen dämlichen Fragen vergrault.
    Aber es ist mir wirklich sehr wichtig zu wissen, wie man die oben beschriebene Abhängigkeit compiliert bekommt.

    Gruß Christian



  • ohne wenisgstens etwas code, kann man dir garnicht helfen,da man verschiedene abhängigkeiten verschieden auflösen kann. Und Kristallkugeln werden hier nicht benutzt.



  • Also gibt es sozusagen keine Standard-Methode die immer klappt, sondern man muss von Fall zu Fall sehen was man tuen kann, richtig?
    Ohne Template-Klassen gibt es ja überhaupt keine Problem damit.
    Mal angenommen man könnte export und so verwenden. Dann dürfte es doch keine Probleme mehr mit den Abhängigkeiten geben, oder?
    Unterstützt das überhaupt irgendein Compiler?

    Gruß Christian



  • wozu hast du überhaupt die trennung .h // .cpp
    mach doch alles in der .h ist IMHO auch die einzige möglichkeit,
    zB bei mir ( ich benutzt den BCB6.0 ), wenn ich die implimentation einer template-klasse in die .cpp packe, dann findet der linker die implementation nicht mehr, da kann ich machen was ich will. ich nehme an, das du das gleiche prob hast, weil du die .cpp direkt includest.



  • Oh jetzt bin ich aber ein bisschen geschockt. 😮
    In allen C++ Büchern die ich gelesen hatte, stand, das man Deklaration und Implementierung sorgfältig trennen sollte. Auch UML-Tools wie z.B. Umbrello generieren automatisch Projekte nach diesem Paradigma.
    Ich meine, ich könnte jetzt auch alles in einer Datei packen. Allerdings müsste ich dann jedesmal wenn ich in einer Datei X eine Klasse in Datei Y verwenden möchte, die komplette Deklaration voranstellen.
    Oder gibt es da geeignete Techniken?

    Gespannte Grüße
    Christian



  • der einzige compiler, der templateimplementationen ind ie cpp auslagern kann, ist der comeau, da er der einzige compiler ist, der export unterstützt



  • Kann du den comeau empfehlen?
    Und weißt du ob solche Erweiterungen bei einer neuen Version vom g++ geplant sind?



  • das sit keine "erweiterung" das ist standard. und ja, der comeau ist uneingeschränkt zu empfehlen, kostet aber 50$



  • man sollte das schon trennen aber was nicht möglich ist, ist nicht möglich 🙂
    das ist eigentlich echt komisch das sowas nur der Comeau unterstützt



  • Gibt es vom Comeau eine Trialversion?



  • nur eine internetversion für kleine sachen^^


Anmelden zum Antworten