programacion - polimorfismo c++
Herencia de C++-¿base inaccesible? (2)
Por defecto, la herencia es privada. Tienes que usar explícitamente public
:
class Bar : public Foo
Parece que no puedo usar una clase base como parámetro de función, ¿he estropeado mi herencia?
Tengo lo siguiente en mi principal:
int some_ftn(Foo *f) { /* some code */ };
Bar b;
some_ftn(&b);
Y la clase Bar hereda de Foo de tal manera:
class Bar : Foo
{
public:
Bar();
//snip
private:
//snip
};
¿Esto no debería funcionar? No parece poder hacer esa llamada en mi función principal
Tienes que hacer esto:
class Bar : public Foo
{
// ...
}
El tipo de herencia predeterminado de una class
en C ++ es private
, por lo que cualquier miembro public
y protected
de la clase base está limitado a private
. struct
herencia de struct
por otro lado es public
por defecto.