【问题标题】:C++ inheritance - inaccessible base?C ++继承 - 无法访问的基础?
【发布时间】:2011-06-18 08:10:18
【问题描述】:

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

我的主要内容如下:

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

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

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

private:
    //snip
};

这不应该工作吗?我似乎无法在我的主函数中进行该调用

【问题讨论】:

    标签: c++ inheritance


    【解决方案1】:

    你必须这样做:

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

    C++ 中class 的默认继承类型是private,因此基类中的任何publicprotected 成员都被限制为private。另一方面,struct 继承默认为 public

    【讨论】:

    • 我最近看到了一些class Bar : virtual Foo 的代码,我找不到任何有关virtual 继承模式的文档和详细信息,有人知道吗?
    【解决方案2】:

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

    class Bar : public Foo

    【讨论】:

    • 扩展:在 class 中,继承是 private 。在 struct 中,继承默认为 public
    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 2013-09-27
    • 2013-09-09
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多