Предположим, мы хотим реализовать стратегический шаблон. У нас есть интерфейс Base
и два производных класса - A
и B
. Экземпляры класса Doer
могут выбирать между A
и B
методами do()
. И вопрос в том, как заполнить код, чтобы сделать, как это должно быть.Как работать с функциями std :: make_unique и интерфейсами?
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;
}