peer_port);// The PendingConnectionPtr takes ownership of c, and will delete it on// destruction.PendingConnectionPtrconn(newPendingConnection(c, udp_transport,shared_from_this(), xmlrpc_uri));//ROS_INFO("add connection to xmlrpcmanager");XMLRPCManager::instance()->addASyncConnection(conn...
1. TcpConnection用到了enable_shared_from_this这个基类,这个基类提供了一个shared_from_this()公用方法可以让子类内部获取到shared_ptr的对象,用来用在类实现过程中需要传递自身指针的地方。有几个点需要注意一下: 虽然enable_shared_from_this是基类,但它确实在shared_ptr里面初始化enable_shared_from_this的成员we...
shared_from_this 是C++11 中引入的一个功能,它是在 std::enable_shared_from_this 类的帮助下实现的。当你有一个类,该类的对象通常通过 std::shared_ptr 管理时,shared_from_this 可以安全地生成这些对象的更多 std::shared_ptr 实例。 1.1 shared_from_this [C++11]的介绍 在本节中,我们将介绍C++11标...
{return*this; }//析构函数~enable_shared_from_this() { }public://成员函数,返回类型为共享智能指针 shared_ptrshared_ptr<_Tp>shared_from_this() {returnshared_ptr<_Tp>(this->_M_weak_this); }//const 类型的成员函数shared_ptr<const_Tp>shared_from_this()const{returnshared_ptr<const_Tp>(t...
例如,还有其他方法根本不引用父母:
enable_shared_from_this的使用 为了保证不出现上面的情况,C++引入了enable_shared_from_this来解决这个问题(该方法是侵入式的,也可以手动保证只有构造第一个指向被持有对象的shared_ptr实例是由原始指针构造的),该方法将enable_shared_from_this<T>作为基类来继承(其中T为智能指针持有的类型),使得派生类拥有可以从th...
从上面的代码中可以看出,share_ptr是std::enable_shared_from_this的友元类,实际上在上面的代码中,对智能指针进行初始化时除了完成_myCar1的初始化外,还做了额外的工作,既通过前面std::enable_shared_from_this的继承使得后面对智能指针进行初始化时同时初始化了弱指针。
1、shared_from_this 几个值得注意的地方shared_from_this()是 enable_shared_from_this<T>的成员函数,返回 shared_ptr<T> 。首先需要注意的是, 这个函数仅在 shared_ptr<T> 的构造函数被调用之后才 能使用。原因是 enable_shared_from_this:weak_ptr 并不在构 造函数中设置,而是在...
std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被一个 std::shared_ptr 对象 pt 管理)安全地生成其他额外的 std::shared_ptr 实例(假设名为 pt1, pt2, ... ) ,它们与 pt 共享对象 t 的所有权。 若一个类 T 继承 std::enable_shared_from_this<T> ,则会为该类 T 提供成员...
std::enable_shared_from_this 是一个类模板,用来返回指向当前对象的shared_ptr智能指针。在说明它的作用前我们可以看一下如下代码: demo.cpp #include <memory>#include <iostream>class A{public:A() { std::cout << "A()" << std::endl; }~A() { std::cout << "~A()" << std::endl; }...