C ++ Klasse ist keine eigene Basis

7

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

    
calccrypto 09.07.2012, 08:01
quelle

4 Antworten

19

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.

    
Flexo 09.07.2012, 08:04
quelle
4

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

    
hmjd 09.07.2012 08:03
quelle
3

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%     
Luchian Grigore 09.07.2012 08:03
quelle
1

Es wird in g ++ - 4.6 nicht unterstützt ("Delegieren von Konstruktoren | N1986 | Nein"), aber wird in 4.7 unterstützt .

    
leftaroundabout 09.07.2012 08:12
quelle

Tags und Links