#include <iostream>
struct B1
{
virtual void method()=0;
virtual ~B1(){}
};
struct B2
{
virtual void method()=0;
virtual ~B2(){}
};
struct D: B1, B2
{
virtual void method()
{
std::cout << "D::method\n";
};
};
int main(int argc,char *argv[])
{
D d;
B1 &b1=d;
B2 &b2=d;
b1.method();
b2.method();
return 0;
}
注意,B1 和 B2 不共享公共接口。
这合法吗?如果是 - 在哪个标准中?C++98/03/11 ?
msvc 和 gcc 都编译好了。
以前我认为,我必须为这种情况使用一些通用接口(可能的虚拟继承)。
这种情况有什么特别的名称吗?
请问具体是怎么操作的?也许一些ISO参考?