Наследование С++ - недоступная база?

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

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

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