Наследование С++ - недоступная база?
Кажется, я не могу использовать базовый класс в качестве параметра функции, я испортил свое наследование?
У меня в основном есть следующее:
int some_ftn(Foo *f) { /* some code */ };
Bar b;
some_ftn(&b);
И класс Bar, наследующий от Foo таким образом:
class Bar : Foo
{
public:
Bar();
//snip
private:
//snip
};
Если это не работает? Кажется, я не могу сделать этот вызов в своей основной функции.
Ответы
Ответ 1
Вы должны сделать это:
class Bar : public Foo
{
// ...
}
Тип наследования по умолчанию для class
в С++ - private
, поэтому любые члены public
и protected
из базового класса ограничены private
. Наследование struct
, с другой стороны, public
по умолчанию.
Ответ 2
По умолчанию наследование является приватным. Вы должны явно использовать public
:
class Bar : public Foo