#include <iostream>
struct B1
{
virtual void method()
{
std::cout << "B1::method\n";
};
virtual ~B1(){}
};
struct B2
{
virtual void method()
{
std::cout << "B2::method\n";
};
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();
d.B1::method();
d.B2::method();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgQjEKewoJdmlydHVhbCB2b2lkIG1ldGhvZCgpCgl7CgkJc3RkOjpjb3V0IDw8ICJCMTo6bWV0aG9kXG4iOwoJfTsKCXZpcnR1YWwgfkIxKCl7fQp9OwoKc3RydWN0IEIyCnsKCXZpcnR1YWwgdm9pZCBtZXRob2QoKQoJewoJCXN0ZDo6Y291dCA8PCAiQjI6Om1ldGhvZFxuIjsKCX07Cgl2aXJ0dWFsIH5CMigpe30KfTsKCnN0cnVjdCBEOiBCMSwgQjIKewoJdmlydHVhbCB2b2lkIG1ldGhvZCgpCgl7CgkJc3RkOjpjb3V0IDw8ICJEOjptZXRob2RcbiI7Cgl9Owp9OwoKaW50IG1haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQp7CglEIGQ7CglCMSAmYjE9ZDsKCUIyICZiMj1kOwoJYjEubWV0aG9kKCk7CgliMi5tZXRob2QoKTsKCWQuQjE6Om1ldGhvZCgpOwoJZC5CMjo6bWV0aG9kKCk7CglyZXR1cm4gMDsKfQ==