C ++ наследование - недоступная база? - PullRequest
130 голосов
/ 31 января 2011

Кажется, я не могу использовать базовый класс в качестве параметра функции, не испортил ли я свое наследование?

У меня в основном есть следующее:

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

А класс Bar, наследующий от Foo таким образом:

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

private:
    //snip
};

Разве это не должно работать? Кажется, я не могу сделать этот вызов в моей основной функции

Ответы [ 2 ]

241 голосов
/ 31 января 2011

Вы должны сделать это:

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

Тип наследования по умолчанию class в C ++ - private, поэтому любые члены public и protected из базового класса ограничены private. struct наследование с другой стороны public по умолчанию.

21 голосов
/ 31 января 2011

По умолчанию наследование является частным. Вы должны явно использовать public:

class Bar : public Foo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...