当你打电话
share_from_this
对象必须由
shared_ptr
。
它还没有由
shared_ptr
在构造函数中,但您可以将代码移出,并将其放入调用的单独函数中
mediator
施工后。
class ConcreteMediator : public Mediator {
public:
ConcreteMediator(shared_ptr<Component1> c1, shared_ptr<Component2> c2)
: component1_(c1), component2_(c2) {}
void set_mediators() {
component1_->set_mediator(shared_from_this());
component2_->set_mediator(shared_from_this());
}
};
auto mediator = make_shared<ConcreteMediator>(c1, c2);
mediator->set_mediators(); // this will work