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 gehen 😡

    das ist es, vielen dank 👍

    gruss


Log in to reply