Trennung von template-Klassen in Header- und Implementationsdatei



  • SeppJ schrieb:

    1. Die Dateien mit der Implementierung dürfen natürlich nicht selber den Header importieren, in dem sie selber importiert werden, denn das wäre schließlich zirkulär. In dem Header sollte logischerweise auch nichts drin stehen, was die Implementierung braucht, denn da stehen ja nur die Imports der Implementierung drin.

    Doch, klar geht das, mach ich immer so.
    Das eine #include steht am Ende vom File das andere am Anfang, include Guards sind in beiden Files drinnen -> funktioniert, egal welches der beiden Files man inkludiert.
    Wenn man es weglässt, dann bekommt man je nach IDE nämlich wirklich Probleme mit dem Syntax-Highlighting -- weil der Parser dafür ohne die #includes halt nur Fehler sieht.

    SeppJ schrieb:

    2. Die Dateien mit der Implementierung dürfen auf keinen Fall dem Compiler zur direkten Übersetzung vorgelegt werden. Die werden ausschließlich indirekt über Header eingebunden.

    Müssen nicht bzw. macht keinen Sinn würde ich sagen. Aber so lange die nötigen #includes eben doch drin sind, geht es trotzdem.



  • NICE, perfekt! Danke, @hustbaer! Keine Ahnung, warum es mit #pragma once nicht geht, aber wofür kann man denn auch C, wenn es einem nicht aus der Patsche hilft, wenn C++ versagt... Danke!



  • NICE, danke! So geht es! Keine Ahnung, warum es mit #pragma once nicht geht, aber wofür kann man denn C, wenn es einem nicht aus der Patsche hilft, wenn C++ versagt... Danke! Kann man irgendwo den Beitrag als abgehakt eintragen oder 'ne beste Antwort vergeben? 😃



  • Sry für den Doublepost, wenn man das wo entfernen kann, möge man es mir zeigen...



  • pragma once ist im C++ Standard nicht definiert.



  • ZondaKeN schrieb:

    [...] wofür kann man denn auch C, wenn es einem nicht aus der Patsche hilft, wenn C++ versagt... Danke!

    Da bist Du selbst schuld:

    ZondaKeN schrieb:

    Als IDE nutze ich Visual Studio 2017.

    Zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist.



  • Swordfish schrieb:

    Zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist.

    Und welche IDE wäre deiner Meinung nach besser? Oder soll ich ganz von IDE weg und auf den GNU-Compiler setzen und in Notepad++ bearbeiten?



  • Swordfish schrieb:

    ZondaKeN schrieb:

    Als IDE nutze ich Visual Studio 2017.

    Zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist.

    Swordfish, bist du besoffen gewesen, als du das geschrieben hast?



  • ZondaKeN schrieb:

    NICE, danke! So geht es! Keine Ahnung, warum es mit #pragma once nicht geht, aber wofür kann man denn C, wenn es einem nicht aus der Patsche hilft, wenn C++ versagt... Danke!

    Hat bei mir auch immer mit #pragma once funktioniert 😕

    ZondaKeN schrieb:

    Kann man irgendwo den Beitrag als abgehakt eintragen oder 'ne beste Antwort vergeben? 😃

    Du kannst den ersten Beitrag in dem Thread editieren und dort sowas wie "[gelöst]" an den Titel anhängen.



  • Th69 schrieb:

    Swordfish schrieb:

    ZondaKeN schrieb:

    Als IDE nutze ich Visual Studio 2017.

    Zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist.

    Swordfish, bist du besoffen gewesen, als du das geschrieben hast?

    Nein, er zitiert hier nur einen sehr alten Beitrag von einem sehr speziellen Poster. Vielleicht gibts den ja noch irgendwo. Ich habe gerade keine Lust zum Suchen.



  • Braunstein schrieb:

    Nein, er zitiert hier nur einen sehr alten Beitrag von einem sehr speziellen Poster. Vielleicht gibts den ja noch irgendwo. Ich habe gerade keine Lust zum Suchen.

    Muss man aber auch erstmal wissen um das zu checken 🙂

    Ich vermute mal dashier wird das Original sein:
    https://www.c-plusplus.net/forum/p265352#265352



  • Genau. Du hast es gefunden. Der Spieleprogrammierer. Immer wieder lustig (oder traurig?).



  • Trotzdem ist diese Antwort auf

    ZondaKeN schrieb:

    Als IDE nutze ich Visual Studio 2017.

    sehr eigenartig. Und daß sich Swordfish an einen Beitrag von 2003 erinnern kann, heißt ja wohl, daß er selber nur der Spieleprogrammierer sein kann... 😮


Anmelden zum Antworten