2017-10-07 6 views
0

Je n'ai pas été en mesure de trouver une réponse qui se rapporte spécifiquement à ma question. C'est un peu un cas "étrange" en termes de ce que j'ai vu. J'ai donc une classe Child2 qui hérite de Child1 qui hérite à son tour de la Parent. Le Parent n'a pas de constructeur.erreur: type 'classe' n'est pas une base directe de 'classe'

Voici comment je déposséderont

Child1.h:

class Child1 : virtual public Parent 

C'est la fonction que je veux appeler du constructeur de Child2:

void Child1::foo(unsigned int i) 
{ 
    // ... 
} 

Child2

Child2::Child2() : Child1() 
{ 
    foo(10); 
} 

Il n'y a pas de fonctions appelées foo() dans Child2 donc il ne devrait pas y avoir d'ambiguïté si je comprends bien.

Cependant, je rencontre cette erreur:

Child2.cpp: In constructor ‘Child2::Child2()’: Child2.cpp:12:28: error: type ‘Child1’ is not a direct base of ‘Child2’ Child2::Child2() : Child1()

constructeur de Child1 travaille, donc je l'ai laissé sortir. Je ne suis pas certain que ce soit important dans ce cas.

+2

Vous avez omis beaucoup qui peut être important dans ce cas. Vous devez fournir un [mcve]. Après tout, si vous ne savez pas quel est le problème, comment savez-vous que ce que vous avez omis n'est pas ce dont les autres ont besoin pour vous aider? – Peter

+0

Veuillez partager la déclaration de la fonction 'foo'. – MKR

Répondre

0

Vérifiez que votre classe Child2 est déclarée en tant qu'enfant de Child1. Quelque chose comme:

class Child2 : Child1 
{....}