传递带有"this"作为参数的shared_ptr并将其存储在变量中

pass a shared_ptr with "this" as a parameter and store it in a variable

本文关键字:ptr 存储 变量 this 参数 shared      更新时间:2023-10-16

我想用"this"传递MyClass对象的引用,调用另一个类的方法。

MyClass就是这样定义的

typedef boost::shared_ptr<class MyClass> MyClassRef;
class MyClass {
  //bla bla bla
};
MyClass::method(){
  someObject->someMethod(this); //this object is from the ReceiverClass
}

我的主要应用程序我以这种方式创建对象:

myObject = MyClassRef( new MyClass());

那么,我必须如何在ReceiverClass中定义someMethod()来接收"this"作为参数,然后将其存储在成员变量中呢??

在伪代码中,我认为它应该是这样的。。。

class ReceiverClass {
  public:
    void someMethod(shared_ptr param);
    shared_ptr mReference;
};
ReceiverClass::someMethod(shared_ptr param){
    mReference = param;
}

但我完全迷路了。

就像Ethan Steinberg暗示的那样,让MyClass从boost::enable_shared_from_this(或std::tr1或std版本,具体取决于编译器的可用版本)继承。然后将方法调用为someObject->someMethod(shared_from_this())。

其思想是shared_from_this()向调用对象返回一个shared_ptr,这似乎就是您要查找的对象。