我想用“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;
}
......但我完全迷失了。
答案 0 :(得分:1)
就像Ethan Steinberg所暗示的那样,MyClass继承自boost :: enable_shared_from_this(或者std :: tr1或std版本,具体取决于你的编译器可用的内容)。然后将您的方法称为someObject-&gt; someMethod(shared_from_this())。
这个想法是shared_from_this()将一个shared_ptr返回给调用对象,这似乎是你正在寻找的东西。