C ++继承-无法访问的基础?


157

我似乎无法使用基类作为函数参数,是否搞砸了继承?

我的主要内容如下:

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

Bar类以这种方式从Foo继承:

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

private:
    //snip
};

这不行吗?我似乎无法在我的主要功能中拨打电话

Answers:


287

您必须这样做:

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

classC ++ 中a的默认继承类型为private,因此基类中的any publicprotected成员仅限于privatestruct另一方面,继承是public默认设置。


28

默认情况下,继承是私有的。您必须明确使用public

class Bar : public Foo


14
展开:在中class,继承为private。在中struct,继承是public默认设置。
特拉维斯·高克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.