来自 enable_shared_from_this 的子分类
sub classing from enable_shared_from_this
我有一个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>
?
没有
你不需要再次推导。但是,这有一些问题,例如你不能这样调用
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
。
我有一个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>
?
没有
你不需要再次推导。但是,这有一些问题,例如你不能这样调用
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
。