2011-01-31 73 views
103

我似乎無法使用基類作爲函數參數,我搞砸了我的繼承?C++繼承 - 無法訪問的基礎?

我已經在我的主要如下:

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

和類酒吧以這樣的方式從富繼承:

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

private: 
    //snip 
}; 

如果不能解決問題?我似乎不能夠作出這樣的電話在我的主要功能

回答

199

你必須這樣做:

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

在C class ++的默認繼承類型爲private,所以任何publicprotected來自基礎類的成員僅限於private。另一方面,struct繼承默認爲public

19

默認情況下,繼承是私有的。你必須明確地使用public

class Bar : public Foo

+9

要展開:在`class`,繼承`private`。在`struct`中,默認情況下繼承是`public`。 – 2011-01-31 02:26:49