Ich bin nicht genau sicher, wie viele Informationen benötigt werden, um dies zu beantworten, also sagen Sie mir, ob mehr Informationen benötigt werden.
Ich habe einen großen Code geändert, den ich geschrieben habe, als ich plötzlich auf diese Nachricht gestoßen bin: error: type 'integer' is not a direct base of 'integer'
. Ich weiß, dass es ein Vererbungsproblem ist, aber ich erben nicht andere Klassen.
Der Code, der dieses Problem verursacht, ist
%Vor%und
%Vor%wurde definiert.
Was muss ich tun, um das Problem zu beheben?
EDIT: im Kompilieren mit -std = c ++ 0x, was nach den Antworten, ich sollte kompilieren können, wenn mein Compiler ist alt: gcc 4.6.2 ich denke
Es sieht so aus, als ob Sie versuchen, einen anderen Konstruktor direkt aufzurufen. Das können Sie nicht in C ++ 03 tun, aber kann genau das in C ++ 11 :
%Vor%
Sie werden g ++ 4.7 oder neuer brauchen, damit das funktioniert, 4.6 unterstützt diese Funktion noch nicht, sogar mit -std = c ++ 0x, was ich mit beiden Versionen auf meinem System getestet habe.
Es ist nicht erlaubt, andere Konstruktoren derselben class
wie diese aufzurufen (es gibt delegierende Konstruktoren in C ++ 11). Sie müssen die Mitglieder der Klasse initialisieren (wie Sie wahrscheinlich in dem anderen Konstruktor getan haben).
BEARBEITEN:
Nach C ++ 0x / C ++ 11 Unterstützung in GCC Delegieren von Konstruktoren wurden in GCC v4.7 implementiert
Sie können einen Konstruktor derselben Klasse nicht in der Initialisierungsliste eines anderen Konstruktors aufrufen (in C ++ 03). Aber Sie können die Mitglieder entsprechend initialisieren:
%Vor%Es wird in g ++ - 4.6 nicht unterstützt ("Delegieren von Konstruktoren | N1986 | Nein"), aber wird in 4.7 unterstützt .
Tags und Links class c++ inheritance