141 votes

Héritage C++ - base inaccessible ?

Il semble que je ne sois pas en mesure d'utiliser une classe de base comme paramètre de fonction. Est-ce que je me suis trompé dans mon héritage ?

J'ai les éléments suivants dans mon fichier principal :

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

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

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

private:
    //snip
};

Cela ne devrait-il pas fonctionner ? Je ne semble pas pouvoir faire cet appel dans ma fonction principale.

266voto

Andrew Noyes Points 2150

Je pense que tu devrais faire ça :

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

EDIT : Je devrais peut-être expliquer ce qui se passe ici !

Le type d'héritage par défaut d'une classe en C++ est privé, donc toute classe de type public et protected Les membres de la classe de base sont limités à private . struct d'autre part, sont public par défaut.

25voto

Jim Buck Points 10839

Par défaut, l'héritage est privé. Vous devez utiliser explicitement public :

class Bar : public Foo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X