#include <iostream>
using namespace std;
class interface {
public:
virtual void fnA() const = 0;
virtual void fnB() const = 0;
};
class partialImplementationA : public virtual interface {
public:
void fnA() const {cout << "fnA from partial implementation A" << endl;}
};
class partialImplementationB : public virtual interface {
public:
void fnB() const {cout << "fnB from partial implementation B" << endl;}
};
class myClass : public virtual interface,
public partialImplementationA,
public partialImplementationB {
public:
};
int main() {
myClass m;
m.fnA();
m.fnB();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgaW50ZXJmYWNlIHsKcHVibGljOiAgCiAgICB2aXJ0dWFsIHZvaWQgZm5BKCkgY29uc3QgPSAwOyAKICAgIHZpcnR1YWwgdm9pZCBmbkIoKSBjb25zdCA9IDA7IAp9OwoKY2xhc3MgcGFydGlhbEltcGxlbWVudGF0aW9uQSA6IHB1YmxpYyB2aXJ0dWFsIGludGVyZmFjZSB7IApwdWJsaWM6IAogICAgdm9pZCBmbkEoKSBjb25zdCB7Y291dCA8PCAiZm5BIGZyb20gcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBBIiA8PCBlbmRsO30KfTsKY2xhc3MgcGFydGlhbEltcGxlbWVudGF0aW9uQiA6IHB1YmxpYyB2aXJ0dWFsIGludGVyZmFjZSB7IApwdWJsaWM6IAogICAgdm9pZCBmbkIoKSBjb25zdCB7Y291dCA8PCAiZm5CIGZyb20gcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBCIiA8PCBlbmRsO30KfTsKCmNsYXNzIG15Q2xhc3MgOiBwdWJsaWMgdmlydHVhbCBpbnRlcmZhY2UsIAogICAgICAgICAgICAgICAgcHVibGljIHBhcnRpYWxJbXBsZW1lbnRhdGlvbkEsIAogICAgICAgICAgICAgICAgcHVibGljIHBhcnRpYWxJbXBsZW1lbnRhdGlvbkIgewpwdWJsaWM6Cn07CgppbnQgbWFpbigpIHsKCW15Q2xhc3MgbTsgIAoJbS5mbkEoKTsgCgltLmZuQigpOyAKCXJldHVybiAwOwp9