相关疑难解决方法(0)

C++从具有相同虚函数名的多个基类继承

我试过这段代码:

class A
{
    virtual void foo() = 0;
};

class B
{
    virtual void foo() = 0;
};

class C : public A, public B
{
    //virtual void A::foo(){}
    //virtual void B::foo(){}

    virtual void A::foo();
    virtual void B::foo();
};

void C::A::foo(){}
void C::B::foo(){}

int main()
{
    C c;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用注释部分时可以,但是当我尝试在类声明之外编写定义时,编译器会报告错误.我正在使用MSVC11编译器,有谁知道怎么写这个?我需要将代码移动到cpp文件中.

谢谢~~

c++ virtual class function multiple-inheritance

13
推荐指数
2
解决办法
2万
查看次数

是否可以覆盖特定父级的虚函数?

假设您有以下类层次结构:

class A
{
   public:
   virtual void foo() {}
}

class B
{
   public:
   virtual void foo() {}
}

class C: public A, public B
{
    public:
    virtual void foo() override {  } // This overrides both
}

class D: public A, public B
{
    public:
    // Is there syntax so that there is a separate override for each?
    // Maybe something like:
    // virtual void A::foo() override {}
    // virtual void B::foo() override {}
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在D类上有两个foo函数,这样如果D作为对A的引用传递,则调用D中的一个函数,如果D作为对B的引用传递,则D中的不同函数是叫什么名字?

用例是如果你从两个外部库继承,它们碰巧有重叠的函数说明符?

c++ overriding virtual-functions multiple-inheritance

2
推荐指数
1
解决办法
85
查看次数