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
-
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
Nein, noch nicht in VS2013 aber in VS2015