传递一个带有“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;
}
...但我完全失去了。
答
像Ethan Steinberg所暗示的那样,MyClass继承自boost :: enable_shared_from_this(或std :: tr1或std版本,取决于编译器可用的版本)。然后调用你的方法someObject-> someMethod(shared_from_this())。
想法是,shared_from_this()返回一个shared_ptr到调用对象,这似乎是你在找什么。
boost :: enable_shared_from_this。 – Lalaland 2012-02-07 06:13:42
你有什么问题? – Chip 2012-02-07 06:16:17
问题是我不知道该怎么做。 – Pier 2012-02-07 07:29:04