web-dev-qa-db-ja.com

C ++継承-アクセスできないベース?

関数パラメーターとして基本クラスを使用できないようですが、継承を台無しにしましたか?

私のメインには次のものがあります:

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

そして、このような方法でFooを継承するクラスBar:

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

private:
    //snip
};

これは機能しませんか?私はメイン関数でその呼び出しを行うことができないようです

132
bandai

あなたはこれをしなければなりません:

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

C++のclassのデフォルトの継承タイプはprivateであるため、基本クラスのpublicおよびprotectedメンバーはprivateに制限されます。一方、struct継承は、デフォルトでpublicです。

245
Andrew Noyes

デフォルトでは、継承はプライベートです。 publicを明示的に使用する必要があります。

class Bar : public Foo

21
Jim Buck