#include <iostream>
using namespace std;
class A
{
public:
int var;
public:
A(int x)
{
var = x; // Это обращение к A::var
}
};
class B: public A
{
protected:
int var;
public:
B():A(2)
{
var = 4; // Обращение к B::var
}
};
class C: public A
{
protected:
int var;
public:
C():A(3)
{
var = 6; // Обращение к C::var
}
};
class D: public B, public C
{
protected:
int var;
public:
void method()
{
var = static_cast<A*>(static_cast<B*>(this))->var; // Должен выдать 2
cout << var << endl;
var = ((A*)(C*)this)->var; // Должен выдать 3
cout << var << endl;
var = B::var; // Должен выдать 4
cout << var << endl;
var = C::var; // Должен выдать 6
cout << var << endl;
}
};
int main()
{
D obj;
obj.method();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIGludCB2YXI7CnB1YmxpYzoKICAgIEEoaW50IHgpCiAgICB7CiAgICAgICAgdmFyID0geDsgICAgLy8g0K3RgtC+INC+0LHRgNCw0YnQtdC90LjQtSDQuiBBOjp2YXIKICAgIH0KfTsKCmNsYXNzIEI6IHB1YmxpYyBBCnsKcHJvdGVjdGVkOgogICAgaW50IHZhcjsKcHVibGljOgogICAgQigpOkEoMikKICAgIHsKICAgICAgICB2YXIgPSA0OyAgLy8g0J7QsdGA0LDRidC10L3QuNC1INC6IEI6OnZhcgogICAgfQp9OwoKY2xhc3MgQzogcHVibGljIEEKewpwcm90ZWN0ZWQ6CiAgICBpbnQgdmFyOwpwdWJsaWM6CiAgICBDKCk6QSgzKQogICAgewogICAgICAgIHZhciA9IDY7ICAgIC8vINCe0LHRgNCw0YnQtdC90LjQtSDQuiBDOjp2YXIKICAgIH0KfTsKCgpjbGFzcyBEOiBwdWJsaWMgQiwgcHVibGljIEMKewpwcm90ZWN0ZWQ6CiAgICBpbnQgdmFyOwpwdWJsaWM6CgogICAgdm9pZCBtZXRob2QoKQogICAgewogICAgICAgIHZhciA9IHN0YXRpY19jYXN0PEEqPihzdGF0aWNfY2FzdDxCKj4odGhpcykpLT52YXI7ICAgICAgIC8vINCU0L7Qu9C20LXQvSDQstGL0LTQsNGC0YwgMgogICAgICAgIGNvdXQgPDwgdmFyIDw8IGVuZGw7CgogICAgICAgIHZhciA9ICgoQSopKEMqKXRoaXMpLT52YXI7ICAgICAgIC8vINCU0L7Qu9C20LXQvSDQstGL0LTQsNGC0YwgMwogICAgICAgIGNvdXQgPDwgdmFyIDw8IGVuZGw7CgogICAgICAgIHZhciA9IEI6OnZhcjsgICAgICAgICAgLy8g0JTQvtC70LbQtdC9INCy0YvQtNCw0YLRjCA0CiAgICAgICAgY291dCA8PCB2YXIgPDwgZW5kbDsKCiAgICAgICAgdmFyID0gQzo6dmFyOyAgICAgICAgICAvLyDQlNC+0LvQttC10L0g0LLRi9C00LDRgtGMIDYKICAgICAgICBjb3V0IDw8IHZhciA8PCBlbmRsOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBEIG9iajsKICAgIG9iai5tZXRob2QoKTsKfQ==