从enable_shared_from_this进行子分类

时间:2015-04-16 07:26:44

标签: c++ boost boost-asio shared-ptr weak-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>派生?

2 个答案:

答案 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

相关问题