ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我的主要内容如下:

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

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

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

private:
    //snip
};

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


B
Barry

你必须这样做:

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

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


我看过一些最近的 class Bar : virtual Foo 代码,我找不到任何关于 virtual 继承模式的文档和详细信息,有人知道吗?
J
Jim Buck

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

class Bar : public Foo


展开:在 class 中,继承是 private 。在 struct 中,继承默认为 public