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


157

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

私のメインには以下があります:

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

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

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

private:
    //snip
};

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

回答:


287

これを行う必要があります:

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

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


28

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

class Bar : public Foo


14
拡張するには:でclass、継承はprivateです。では、デフォルトstructで継承publicされます。
Travis Gockel、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.