Verbindung zwischen Klassen?
-
Also Danke erstmal aber das ist nicht ganz wie ich es gemeint hab! Ich bekomme immer so eine eigenartige Fehlermeldung bezüglich
Basis* commands_[3];Interface& i_;Und zwar es fehlt ; vor * da fehlt aber kein ; niergends!
-
hanni6al schrieb:
Also Danke erstmal aber das ist nicht ganz wie ich es gemeint hab! Ich bekomme immer so eine eigenartige Fehlermeldung bezüglich
Basis* commands_[3];Interface& i_;Und zwar es fehlt ; vor * da fehlt aber kein ; niergends!
1. nirgendwo (nirgends)
2. doch - weil der typ noch nich bekannt ist...
wenn du die reihenfolge so lassen willst/musst, dann schreib dort:
class Basis* commands_[3];bb
-
Danke hat geholfen!!
Nächstes Prob:
class Basis; class Interface { private: Basis* commands_[3]; public: Interface() ; ~Interface(){}; }; class Basis { protected: Interface& i_; public: Basis(); ~Basis(); virtual char* getName() =0; }; class Ableitung:public Basis { public: Ableitung() {cout<<"Konstruktor Ableitung1"<<endl;}; ~Ableitung() {cout<<"Destruktor Ableitung1"<<endl;}; char* getName() {return "Ableitung";}; };Nächstes Problem ich kann einfach nicht das Array of Objects Pointers anlegen! Und zwar wollte ich es so machen:
Interface::Interface() { Basis* commands_[3]; }int main() { Interface::commands_[0] = new Ableitung; }Stehe auf der Leitung

mfg
-
Na, der Compiler müsste dir aber eine eindeutig verständliche Fehlererklärung liefern...

-
Bulli schrieb:
Na, der Compiler müsste dir aber eine eindeutig verständliche Fehlererklärung liefern...

Also folgende Errors kommen werde leider nicht daraus schlau:
error C2597: Ungültiger Verweis auf nicht-statischen Member 'Interface::commands_'
error C3867: "Interface::commands_": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&Interface::commands_", um einen Zeiger auf den Member zu erstellen.
error C2109: Index erfordert ein Array oder einen Zeigertyp
-
Interface::Interface() { Basis* commands_[3]; }aha?
was machst du hier?
oder besser - was willst du hier machen? was du da machst, seh ich: gar nichts
bb
-
Und wie macht man es richtig? Ich will hier das Array anlegen
-
so:
class Interface { private: Basis* commands_[3]; //hier deklarierst du es ("legst du es an") public: Interface() { //hier kannst du es füllen, z.bsp. so: commands_[0] = new Ableitung(1); commands_[1] = new Ableitung(2); commands_[2] = new Ableitung(3); } ~Interface() { for (size_t i(0), e(3); i != e; ++i) delete commands_[i]; }; };bb
-
Hallo!
Leider funktioniert das nicht!
Bekomme folgende Fehlermeldung vom Linker:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall Basis::~Basis(void)" (??1Basis@@UAE@XZ)" in Funktion "__unwindfunclet$??0Ableitung@@QAE@XZ$0".
""public: virtual __thiscall Basis::~Basis(void)" (??1Basis@@UAE@XZ)" in Funktion "__unwindfunclet$??0Ableitung@@QAE@XZ$0".
Habs so reingeschrieben:
Interface::Interface() { commands_[0] = new Ableitung; }
-
class Basis { protected: Interface& i_; public: Basis(); ~Basis(); //das hier hast du nicht implementiert - das sagt dir deine fehlermeldung doch auch... virtual char* getName() =0; };
-
Du mußt die Fehlermeldungen lesen! Für einen Anfänger sicherlich am Anfang schwer, weil es teilweise kryptisch aussieht. Aber wenn man immer nur fragt, und nicht selber liest, wird man es nie lernen.
Aber hier mal das wichtigste in Fett, wie man es liest:error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall Basis::~Basis(void)" (??1Basis@@UAE@XZ)" in Funktion "__unwindfunclet$??0Ableitung@@QAE@XZ$0".
""public: virtual __thiscall Basis::~Basis(void)" (??1Basis@@UAE@XZ)"**
in Funktion** "__unwindfunclet$??0Ableitung@@QAE@XZ$0".Übrigens, der MSVC ist schon so genial, das er dir Error-Codes ausspuckt (z.B. LNK2019) und du diese in der MSDN nachschlagen kannst:
http://msdn.microsoft.com/de-de/library/799kze2z.aspx