Konstruktoren vererben **gelöst**
-
ich habe folgende Klassen
public ref class CTest { protected: array<unsigned short> ^rguwArray; public: CTest(){rguwEPC = gcnew array<unsigned short>(6);} } ref class CTestVererbt : public CTest { public: unsigned short GetElement(unsigned char Index){return rguwArray[(6>Index)?Index:0];} }
und in meinem Code möchte ich nun
CTestVererbt ^Vererbt = gcnew CTestVererbt();
aufrufen und dort bringt er den Fehler:
error C2512: CTestVererbt::CTestVererbt: Kein geeigneter Standardkonstruktor verfügbar
warum wird mein Konstruktor nicht mit vererbt?
MfG
-
Konstruktoren werden nicht vererbt.
Du musst geeignete Konstruktoren in den abgeleiteten Klassen impl.
Simon
-
Ok hab ich mir schon gedacht.
Wenn ich in meiner Basisklasse mehrere Konstruktoren habe und ich eine Instanz der Abgeleiteten Klasse erzeuge wird dort immer der Konstruktor ohne Parameter (CTest()) genommen oder?
MfG
-
ich möchte
public ref class CTest { protected: array<unsigned short> ^rguwArray; public: CTest(unsigned char ubLength){rguwEPC = gcnew array<unsigned short>(ubLength);} } ref class CTestVererbt : public CTest { public: CTestVererbt(unsigned char ubLength){} unsigned short GetElement(unsigned char Index){return rguwArray[(6>Index)?Index:0];} }
er bringt bei CTestVererbt(unsigned char ubLenth){} dann den Fehler:
error C2512: 'CTest': Kein geeigneter Standardkonstruktor verfügbar
Wie muß ich das machen?
-
public ref class CTest { protected: array<unsigned short> ^rguwArray; public: CTest(unsigned char ubLength){rguwEPC = gcnew array<unsigned short>(ubLength);} } ref class CTestVererbt : public CTest { public: CTestVererbt(unsigned char ubLength) : CTest(ubLength) {} unsigned short GetElement(unsigned char Index){return rguwArray[(6>Index)?Index:0];} }
Du musst ihn noch aufrufen, den Basis Klassen Konstr.
Simon
-
Anmerkung:
Wenn mindestens ein selbst erstellter Konstruktor vorhanden ist, wird kein Standardkonstruktor erstellt. Den musst Du dann auch selber kodieren.
Ohne Verwendung des Basisinitialisierers von theta wird versucht, den Standardkonstruktor von CTest aufzurufen, der ja nun mal nicht vorhanden ist. Deshalb die Fehlermeldung.
-
danke