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

时间:2012-02-07 06:08:35

标签: c++ boost shared-ptr

我想用“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;
}

......但我完全迷失了。

1 个答案:

答案 0 :(得分:1)

就像Ethan Steinberg所暗示的那样,MyClass继承自boost :: enable_shared_from_this(或者std :: tr1或std版本,具体取决于你的编译器可用的内容)。然后将您的方法称为someObject-&gt; someMethod(shared_from_this())。

这个想法是shared_from_this()将一个shared_ptr返回给调用对象,这似乎是你正在寻找的东西。