来自 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