#include <iostream>
#include <memory>
class Base {
public:
~Base () = default;
Base () { count = 0; }
virtual void method1() = 0;
virtual void method2() = 0;
private:
int count;
};
class Child final : public Base {
public:
Child() = default;
~Child() = default;
void method1() override { std::cout << "B Running method 1\n"; }
void method2() override { std::cout << "B Running method 2\n"; }
};
class myClass {
public:
myClass(std::unique_ptr<Base> base) : _base(std::move(base)) { }
~myClass() = default;
private:
std::unique_ptr<Base> _base;
};
int main() {
myClass obj(std::make_unique<Child>());
std::cout << "OK";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKY2xhc3MgQmFzZSB7IApwdWJsaWM6CiAgICB+QmFzZSAoKSA9IGRlZmF1bHQ7CiAgICBCYXNlICgpIHsgY291bnQgPSAwOyB9CgogICAgdmlydHVhbCB2b2lkIG1ldGhvZDEoKSA9IDA7IAogICAgdmlydHVhbCB2b2lkIG1ldGhvZDIoKSA9IDA7ICAKCnByaXZhdGU6CiAgICBpbnQgY291bnQ7Cn07IAoKY2xhc3MgQ2hpbGQgZmluYWwgOiBwdWJsaWMgQmFzZSB7IApwdWJsaWM6IAogICAgQ2hpbGQoKSA9IGRlZmF1bHQ7CiAgICB+Q2hpbGQoKSA9IGRlZmF1bHQ7CgogICAgdm9pZCBtZXRob2QxKCkgb3ZlcnJpZGUgeyBzdGQ6OmNvdXQgPDwgIkIgUnVubmluZyBtZXRob2QgMVxuIjsgfSAKICAgIHZvaWQgbWV0aG9kMigpIG92ZXJyaWRlIHsgc3RkOjpjb3V0IDw8ICJCIFJ1bm5pbmcgbWV0aG9kIDJcbiI7IH0KfTsgCgpjbGFzcyBteUNsYXNzIHsKcHVibGljOgogICAgbXlDbGFzcyhzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4gYmFzZSkgOiBfYmFzZShzdGQ6Om1vdmUoYmFzZSkpIHsgfQogICAgfm15Q2xhc3MoKSA9IGRlZmF1bHQ7Cgpwcml2YXRlOgogICAgc3RkOjp1bmlxdWVfcHRyPEJhc2U+IF9iYXNlOwp9OwoKaW50IG1haW4oKSB7ICAgICAKCW15Q2xhc3Mgb2JqKHN0ZDo6bWFrZV91bmlxdWU8Q2hpbGQ+KCkpOyAKCXN0ZDo6Y291dCA8PCAiT0siOwp9