C++ herencia – inaccesible base?

Me parece que no se puede utilizar una clase base como un parámetro de la función, han arruiné mi herencia?

Tengo el siguiente en mi principal:

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

Y la clase de Barra de heredar de Foo en tal manera:

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

private:
    //snip
};

Si esto no funciona? Yo no parecen ser capaces de hacer que la llamada en mi función principal

InformationsquelleAutor bandai | 2011-01-31

2 Kommentare

  1. 261

    Tienes que hacer esto:

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

    El valor predeterminado tipo de herencia de un class en C++ es private, por lo que cualquier public y protected los miembros de la clase base se limita a private. struct la herencia en el otro lado es public por defecto.

  2. 24

    Por defecto, la herencia es privado. Usted tiene que utilizar explícitamente public:

    class Bar : public Foo

    • Para ampliar: En un class , que es la herencia de private . En un struct , que es la herencia de public por defecto.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea