automatische konstruktor erzeugung bei ableitung



  • hallo leute

    ich will das verhalten einer basisklasse unter bestimmten umstaenden und nur sehr selten aendern.

    nun hab ich mir folgendes ueberlegt:

    template<class DERIVED>
    class modal_window : public DERIVED
    {
       public:
          void show_modal(void)
          {
             MessageBox(0, L"messageloop wird erzeugt", L"Message", MB_OK);
             show();
             MessageBox(0, L"messageloop wird verlassen", L"Message", MB_OK);
          }
    };
    
    class my_window 
    {
       public:
          int i;
    
          my_window(int v) : i(v) { }
    
          void show(void)
          {
             MessageBox(0, L"show von my_window wurde aufgerufen", L"Message", MB_OK); 
          }
    };
    
    ...
    modal_window<my_window> win(10);
    win.show_modal();
    

    was so aber natuerlich nicht funktioniert wegen dem konstruktor.
    gibts bei C++11 irgendwas neues wo in der abgeleiteten klasse konstruktoren automatisch erstellt werden, um der basisklasse die benoetigten parameter an den/die konstruktor/en zu uebergeben ?

    oder ist das ne grundsaetzlich schlechte idee und so nicht loesbar ?

    Meep Meep



  • template<class DERIVED>
    class modal_window : public DERIVED
    {
       public:
          using DERIVED::DERIVED;
          void show_modal(void)
          {
             MessageBox(0, L"messageloop wird erzeugt", L"Message", MB_OK);
             show();
             MessageBox(0, L"messageloop wird verlassen", L"Message", MB_OK);
          }
    };
    

    In der Theorie sollte es so gehen ...



  • danke fuer die antwort. aber:

    VS gibt mir folgenden fehler aus:

    error C2039: 'DERIVED': Ist kein Element von 'my_window'
    

    verwende VS 2013

    eventuell wird das von VS (noch) nicht unterstuetzt ?

    Meep Meep




Anmelden zum Antworten