我试过这段代码:
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文件中.
谢谢~~
假设您有以下类层次结构:
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中的不同函数是叫什么名字?
用例是如果你从两个外部库继承,它们碰巧有重叠的函数说明符?