#include <stdio.h>
struct ITimer {
virtual void createTimer() = 0;
};
class A : public virtual ITimer
{
public:
void showA() {
printf("showA\n");
createTimer();
}
};
class B : public virtual ITimer
{
public:
void showB() {
printf("showB\n");
}
virtual void createTimer() {
printf("createTimer");
}
};
class C: public A, public B
{
public:
void test() {
showA();
showB();
}
};
int main()
{
C c;
c.test();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CnN0cnVjdCBJVGltZXIgewogICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbWVyKCkgPSAwOwp9OwpjbGFzcyBBIDogcHVibGljIHZpcnR1YWwgSVRpbWVyCnsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIHNob3dBKCkgewogICAgICAgICAgICBwcmludGYoInNob3dBXG4iKTsKICAgICAgICAgICAgY3JlYXRlVGltZXIoKTsKICAgICAgICB9Cn07CgpjbGFzcyBCIDogcHVibGljIHZpcnR1YWwgSVRpbWVyCnsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIHNob3dCKCkgewogICAgICAgICAgICBwcmludGYoInNob3dCXG4iKTsKICAgICAgICB9CiAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbWVyKCkgewogICAgICAgICAgICBwcmludGYoImNyZWF0ZVRpbWVyIik7CiAgICAgICAgfQp9OwoKY2xhc3MgQzogcHVibGljIEEsIHB1YmxpYyBCCnsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIHRlc3QoKSB7CiAgICAgICAgICAgIHNob3dBKCk7CiAgICAgICAgICAgIHNob3dCKCk7CiAgICAgICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBDIGM7CiAgICBjLnRlc3QoKTsKICAgIHJldHVybiAwOwp9Cg==