Inline Konstruktor
-
Hallo zusammen,
angenommen, ich habe folgende einfache Klasse:class CTest { private: int zahl; public: int get_zahl() {return zahl;}; }; int main() { CTest x; }Dann ist die Erzeugung eines Objekts wie oben möglich, da kein Konstruktor von mir angegeben wurde. Es wird also ein vom Compiler erzeugter Standardkonstruktor aufgerufen. Ich muss also nicht das schreiben:
CTest x();Wenn ich nun einen Konstruktor definiert habe, dann kann ich nicht mehr so ein Objekt erzeugen, da kein Standardkonstruktor erzeugt wird. Folgender Code würde zu einem Fehler führen:
CTest x; //Falls Konstruktor angegebenNun definiere ich meinen Konstruktor inline. Dann führt die letzte Erzeugung des Objekts zu keinem Fehler mehr. Warum?
Vielen Dank
lg, freakC++
-
Was für einen Fehler bekommst du denn?
Ich könnte mir vorstellen, dass du einen nicht aufgelösten Verweis bekommst, wenn du den Konstruktor nur deklarierst und nirgendwo implementierst.
Aber um mehr sagen zu können, müsstest du den Fehler genauer beschreiben.MfG, Jochen.
-
freakC++ schrieb:
Ich muss also nicht das schreiben:
CTest x();Das ist eine Funktionsdeklaration. Ich wüsste nicht, warum du das schreiben "müssen" solltest.
Wenn ich nun einen Konstruktor definiert habe, dann kann ich nicht mehr so ein Objekt erzeugen, da kein Standardkonstruktor erzeugt wird.
Korrektur: Wenn du einen Konstruktor mit mindestens einem Pflichtargument definierst.
Nun definiere ich meinen Konstruktor inline. Dann führt die letzte Erzeugung des Objekts zu keinem Fehler mehr. Warum?
inline ist für diese Frage völlig unerheblich.
-
// [...] public: CTest() { } // [...] int main() { CTest x; }Wo ist das Problem?

-
Hallo,
entschuldigt bitte, ich habe mich gerade auch nochmal umgeschaut und da etwas falsch verstanden. Es hat eher etwas mit Default - Werten zu tun. Sorry! Kann vorkommen - sollte aber nicht xDlg, freakC++