我有generic_connection
class generic_connection: public boost::enable_shared_from_this<generic_connection>
现在我想将其子类化并创建
class agent_connection: public generic_connection
agent_connection
是否需要再次从boost::enable_shared_from_this<agent_connection>
派生?
答案 0 :(得分:5)
没有
答案 1 :(得分:2)
你不需要再次解除。但是,这有一些问题,例如你不能像这样打电话
shared_from_this()->agent_connection__method()
或者
boost::bind(&agent_connection::method, shared_from_this())
要解决此问题,您应该进行模板化继承:
template <typename T>
class generic_connection :
public boost::enable_shared_from_this<T> {
};
class agent_connection : public generic_connection< agent_connection > {
};
这会使agent_connection
更复杂,但您无需在任何时候使用它shared_ptr
。