c++ - 继承自具有相同成员的两个 parent

标签 c++ inheritance multiple-inheritance

我有三门课; A、B 和 C:

class A
{
    public:
        A() {}
    protected:
        int x = 0;
        int y = 0;
};

class B
{
    public:
        B() {}
    protected:
        int x = 1;
        int y = 1;
};

class C : public A, B
{
    public :
        C() {}
};

我希望 C 的 x 成员是来自 A 的成员,而 C 的 y 成员是来自 B 的成员。我该怎么做?自从我写了 class C : public A, B ,现在 C.x 和 C.y 都为 0。当我有多重继承并且我想从一个父级继承一些成员并从另一个父级继承一些成员时,我通常会遇到这个问题。是否有类似于成员函数的选项,可以使用关键字 using选择将使用哪个功能?

最佳答案

now both C.x and C.y are 0

实际上,C::xC::y 都是不明确的,无法编译。您可以使用 using 显式选择并公开基类中的成员:

class C : public A, B
{
    public :
        C() {}

        using A::x;
        using B::y;
};

关于c++ - 继承自具有相同成员的两个 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69015863/

相关文章:

c# - 同时调用基本构造函数和无参数构造函数?

objective-c - (不是这样)使用属性时愚蠢的 Objective-C 继承问题 - GCC Bug?

python - 如何防止 Sphinx 将 "object"列为基类?

python - 使用 Mypy 键入 dict mixin 类

从 VS 6 到 VS 2013 的 C++ IDE 迁移

c++ - 取消引用无效指针时如何在 Visual C++ 2017 调试器中出错?

c++ - 为什么 'volatile' 寄生在 C++ 中?

c++ - 实时音频(发送和接收)的好库?

python - 如何使 super() 在 python 中的这种非理想情况下工作?

c++ - 限制 C++ 中虚拟基类的对象共享