2011-01-31 7 views
103

私は関数のパラメータとして基本クラスを使用することができないようです、私は私の継承を台無しにしましたか?C++継承 - アクセスできないベース?

私は私のメインの中で、次のしている:

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

そして、このような方法で、Fooの継承クラスのバー:

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

private: 
    //snip 
}; 

、これは動作しないでしょうか?私はあなたがこれをしなければならない私の主な機能に

答えて

199

その電話をかけることができていないようです:

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

C++でclassのデフォルトの継承タイプはprivateので、任意のpublicprotectedです基本クラスのメンバーはprivateに制限されています。一方、structの継承はデフォルトでpublicです。

19

デフォルトでは、継承はプライベートです。展開するには

class Bar : public Foo

+9

:: 'class'では、継承は' private'では、明示的publicを使用する必要があります。 'struct'では、継承はデフォルトで' public'です。 –