Héritage C ++ – base inaccessible?

Je semble être incapable d’utiliser une classe de base comme paramètre de fonction, ai-je foiré mon inheritance?

J’ai le suivant dans ma main:

int some_ftn(Foo *f) { /* some code */ }; Bar b; some_ftn(&b); 

Et la classe Bar héritant de Foo de cette manière:

 class Bar : Foo { public: Bar(); //snip private: //snip }; 

Est-ce que cela ne devrait pas marcher? Je ne semble pas être capable de faire cet appel dans ma fonction principale

Tu dois faire ca:

 class Bar : public Foo { // ... } 

Le type d’inheritance par défaut d’une class en C ++ étant private , tous public membres public et protected de la classe de base sont limités à private . struct inheritance struct est par contre public par défaut.

Par défaut, l’inheritance est privé. Vous devez utiliser explicitement public :

class Bar : public Foo