【发布时间】:2017-03-05 15:37:58
【问题描述】:
假设我们要实现策略模式。我们有一个接口Base 和两个派生类——A 和B。 Doer 类的实例可以在A 和B 的方法do() 之间进行选择。而问题是如何完成代码以使其成为应有的样子。
class Base {
virtual void do() const = 0;
};
class A: public Base {
void do() const override {};
};
class B: public Base {
void do() const override {};
}
class Doer {
public:
Doer(std::unique_ptr<Base> b_ptr) : ptr(b_ptr) {}
void do() const { ptr->do(); }
private:
std::unique_ptr<Base> ptr;
}
int main() {
Doer doer(std::unique_ptr<Base>());
doer.do();
return 0;
}
【问题讨论】:
标签: c++ inheritance interface abstract-class unique-ptr