web-dev-qa-db-fra.com

Héritage C ++ - base inaccessible?

Il semble que je ne puisse pas utiliser une classe de base comme paramètre de fonction. Est-ce que j'ai gâché mon héritage?

J'ai le suivant dans ma principale:

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

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

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

private:
    //snip
};

Cela ne devrait-il pas fonctionner? Je ne semble pas être capable de faire cet appel dans ma fonction principale

132
bandai

Tu dois faire ca:

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

Le type d'héritage par défaut d'un class en C++ est private, de sorte que les membres public et protected de la classe de base sont limités à private. struct l'héritage, par contre, est public par défaut.

245
Andrew Noyes

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

class Bar : public Foo

21
Jim Buck