[Erledigt]Mehrfachvererbung, Diamond-Problem
-
Hi
Ich habe mal wieder ein Problem. Ich möchte in einem Projekt Objekte durch Mehrfachvererbung aus anderen Zusammensetzten. Jetzt bekomme ich aber immer diese Fehlermeldung:error: request for member `higher' in `DObject', which is of non-class type
D ()()'| error: request for member \Zeige' in `DObject', which is of non-class type `D ()()'|
||=== Build finished: 2 errors, 0 warnings ===|Bei diesem Quellcode:
#include <iostream> using namespace std; class A { public: A() { Nummer = 0; } protected: int Nummer; }; class B : virtual public A { public: void higher() { Nummer++; } }; class C : virtual public A { public: void lower() { Nummer--; } }; class D: public B, public C { public: D() { Nummer = 0; } void Zeige() { cout << Nummer << endl; } }; int main() { D DObject(); DObject.higher(); DObject.Zeige(); return 0; }Ich benutze den GNU GCC Compiler. Was mache ich falsch?
-
D DObject();Da deklariest du keine Variable, sondern eine Funktion.
Ist prinzipiell das gleiche, wie das hier:
int foo ();Was ja offensichtlich eine Funktionsdeklaration ist, somit ist das obige auch eine. Lass also die Klammern hinten weg.
-
stimmt danke,
das vergesse ich andauernd wieder