Hilfsklassen
-
Welche Version ist besser ?
#include <fuerHelferKlasse1.h> class fuerHelferKlasse2; class X { .... private: class Hilfmir { ..... } helfer; };oder außerhalb von Klasse X in der Implementierungsdatei (*.cpp):
#include <fuerHelferKlasse1.h> #include <fuerHelferKlasse2.h> namespace { class Hilfmir { ..... } *helfer; } X() { helfer = new Hilfmir(); } ~X() { delete helfer;}
-
Nunja, spontan (nach meinem Gefühl her) würde ich sagen, die zweite Version.
-
naja, kommt ganz drauf an. Es ist keinem geholfen, wenn du 20 kleine Helferklassen, die jeweils 50 Zeilen Aufwand haben und sowieso immer zusammenarbeiten müssen, in 20 einzelne header und cpp-Dateien packst. Du musst dann nämlich auch jedesmal die 20 header includieren und jedesmal alle 20 cpps bzw. objektdateien beim compilieren mit angeben.
Ich würd also sagen: Klassen, die untrennbar miteinander verknüpft sind, können auch durchaus in der gleichen Datei auftauchen...
-
Hi,
ich würde auch sagen, dass es ganz darauf ankommt was du damit ausdrücken willst. Ich weiss nicht obs das wort gibt aber ich würde den fall 1 mal als statische aggregation sehen. Wenn also die helfer auf klassen ebene nur mit den klassen zusammen sinn machen, dann würde ich zu 1 tendieren.
Diese schachtelung stammt afaik aus einer zeit in denen namespace noch nicht so richtig unterstützt wurden, also hat man das so gemacht.
-
Bin inzwischen klar für Version 2, da die .h-Datei in Version 1 Header beinhaltet, die außerhalb der Implementierung von X nicht von Interesse / also überflüssig sind:
#include <fuerHelferKlasse1.h> class fuerHelferKlasse2;Version 1 wär eine Option, falls die Hilfsklasse keine zusätzlichen include-Anweisungen erforderte.
Vielen Dank für die Antworten
Pdug