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

问题描述:

我想通过调用另一个类的方法来传递MyClass对象的引用。传递一个带有“this”作为参数的shared_ptr并将其存储在一个变量中

这是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()领取“这个”作为一个参数,然后将其存储在一个成员变量?

在伪代码,我认为这将是这样的......

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

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

...但我完全失去了。

+2

boost :: enable_shared_from_this。 – Lalaland 2012-02-07 06:13:42

+0

你有什么问题? – Chip 2012-02-07 06:16:17

+0

问题是我不知道该怎么做。 – Pier 2012-02-07 07:29:04

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

想法是,shared_from_this()返回一个shared_ptr到调用对象,这似乎是你在找什么。

+0

MyClass已经从其他一些类继承。 (我知道,不在这个例子中) – Pier 2012-02-07 07:28:44

+1

@Pier:在C++中,你可以继承更多的基类。 – stefaanv 2012-02-07 07:44:34