Konstruktor Weiterleitung
-
Hallo zusammen,
in Java kann man den Konstruktor an einen anderen Konstruktor weiterleiten:
z. B.
class Test{ public Test(){ } public Test(/*Parameter*/){ this(); } }Geht sowas auch in C++?
Oder macht man das mit nem Methodenaufruf?Gruß,
CSpille
-
Nein, das geht nicht. Du kannst dir aber eine Init Methode schreiben, und diese
dann aus verschiedenen Konstruktoren aufrufen. Aber in der Regel benötigt man
sowas auch nicht
-
Wofür würdest du denn das konkret benötigen? Wenn ich das in Java einsetze, dann nur weil mal wieder keine Default-Parameter möglich sind.
MfG SideWinder
-
CSpille schrieb:
Geht sowas auch in C++?
Nein.
CSpille schrieb:
Oder macht man das mit nem Methodenaufruf?
Ja. Kommt fast auf's selbe raus, falls man das überhaupt mal braucht. Siehe Posts über mir.
-
Du hast recht...
Ich brauch es auch für die Übergabe von Standard-Parametern.
Allerdings möchte ich unter Linux und Windows den gleichen Header
verwenden, allerdings haben die Koastanten unterschiedliche Werte@phlox81: Genau das meinte ich mit dem Methodenaufruf
thx,
CSpille
-
CSpille schrieb:
Ich brauch es auch für die Übergabe von Standard-Parametern.
Allerdings möchte ich unter Linux und Windows den gleichen Header
verwenden, allerdings haben die Koastanten unterschiedliche Werte#ifdef WIN32 foo( int myVar = 42 ); #else foo( int myVar = 312000 ); #endDavon ab wüsste ich nicht wie dir verkettete Konstruktoren in diesem Fall weiterhelfen könnten... du?
-
Also ich hab mir das etwa so gedacht:
Datei window.h
class Window{ public: Window(int x, int y); Window(); void methode(); // plattformunabhängig }Datei window.cpp
void Window::methode(); }Datei window_win.cpp
#ifdef WIN32 Window::Window(int x, int y){ // native Methoden-Aufrufe } Window::Window(){ this(DEFAULT_X, DEFAULT_Y); // mir ist klar, dass es so nicht geht... } #endifOder macht das deiner Meinung nach auch keinen Sinn?
So ist das für die Betriebssysteme schön inhaltlich getrennt...Gruß,
CSpille
-
// window.h class Window { public: Window (int x = DEFAULT_X, int y = DEFAULT_Y); void methode (); }; // window_win.cpp #ifdef WIN32 void methode () { // do sth } #ndif // window_other.cpp #ifndef WIN32 void methode () { // do sth else } #endifMfG SideWinder
-
Hallo SideWinder,
mir ist klar, dass ich es auch so machen kann...
Ich schätze du hast im Header ein #ifdef um den Kostruktor vergessen,
da sonst immer der gleiche Parameter übergeben wird und genau
diese #ifdef will ich im Header vermeiden...
Was mir gerade auffällt bei der Fenstergröße haben die Konstanten,
gleub ich, den gleichen Wert, ist also nen schlechtes BeispielAber ne andere Frage:
Kann ich als Standard-Parameter auch irgendwie this übergeben?
Ich dachte an einen Thread ala Java, der als Runnable standardmäßig
sich nimmt.Gruß
-
class Window { public: Window (int x = DEFAULT_X, int y = DEFAULT_Y); Window (){ *this = Window(DEFAULT_X,DEFAULT_Y); } };