entwurfsfrage
-
hallo leutz,
bei folgender fragestellung wuerde ich gerne ein paar Ideen von euch lesen wollen:
ich habe folgende Klassenhirarchie:
// /////////////////////// class A // /////////////////////// { public: static void Init() { s_foo = 23; } private: static int s_foo; }; // /////////////////////// class B : public A // /////////////////////// { public: static void Init() { s_foo = 45; } private: static int s_foo; }; int A::s_foo = 0; int B::s_foo = 0;
Hintergedanke: beide Klassen haben eine statische variable s_foo, die bei jeder Klasse auf andere weise "berechnet" werden soll (in Init());
Ich wuerde den Aufruf aber gerne einmalig nicht (!) unbedingt wie folgt machen wollen:int main( int argc, char *argv[]) { A::Init(); B::Init(); }
Gibt es eine elegantere Möglichkeit die Init() Methode aufrufen zu lassen als die obige. Das ganze soll darauf hinauslaufen, dass ich fuer jede Klasse das Init() aufrufen müsste !?
-
Im letzten Satz sollte es natuerlich heissen:
"Das ganze soll NICHT darauf hinauslaufen, dass ich fuer jede Klasse das Init() aufrufen müsste !?"
-
Alles in einen Vector schieben den durchlaufen und Init aufrufen eventuell gleich eine Managerklasse dafür.
-
Pack die statische Variable in eine Funktion, dann brauchst du überhaupt kein Init-Aufruf.
Also sowas:static int getFoo() { static int s_foo = 23; return s_foo; }
-
man !!
ich sollte frueher schlafen gehendas ist es, vielen dank
gruss