erreur C2614: 'ChildClass' : illégal de l'initialisation de membre: 'var1' n'est pas une base ou d'un membre
J'obtiens l'erreur suivante en C++:
erreur C2614: 'ChildClass' : illégal de l'initialisation de membre: 'var1' est
pas une base ou d'un membre
Class Base
{
protected:
int var1;
public:
Base()
{
var1=0;
}
}
class Child : public Base
{
int chld;
public:
Child() : var1(0)
{
chld=1;
}
}
Je ressens ce que j'ai fait est que par OO protocole.
Ici var1
est un membre de données de la classe de Base avec protégé comme le spécificateur d'accès. Donc, Il peut être héréditaire et il deviendrait privée de l'enfant.
Ne comprends pas pourquoi j'obtiens l'erreur?
Vous avez également un tas d'erreurs dans votre code:
Pourquoi pensez-vous que "il serait privée de l'enfant"?
Class Base
devrait être class Base
. Il vous manque des points-virgules après chaque classe.Pourquoi pensez-vous que "il serait privée de l'enfant"?
OriginalL'auteur codeLover | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
Il ne fonctionne pas pour la raison exacte du message d'erreur vous offre: vous ne pouvez utiliser de l'initialiseur de listes de membres directs ou classes de base.
Dans votre cas, vous n'avez même pas besoin d'initialiser
var1
, depuisBase::Base()
sera appelé parChild
'constructeur, qui vavar1
à0
.Si vous souhaitez une autre valeur, vous aurez à la surcharge de
Base
constructeur et de l'appeler explicitement:Base(int x)
surcharge peut avoir besoin d'êtreprotected
.OriginalL'auteur Luchian Grigore
Vous ne pouvez pas initialiser un membre d'une classe de base, seulement de la classe. Utiliser un constructeur paramétré dans la classe de base.
OriginalL'auteur sharptooth