传递带有"this"作为参数的shared_ptr并将其存储在变量中
pass a shared_ptr with "this" as a parameter and store it in a variable
我想用"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,这似乎就是您要查找的对象。
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- CLANG 编译器 说:变量"PTR"可能未初始化
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 视觉 C++编译器在计算其参数之前是否允许将函数 ptr 存储在寄存器中?
- 如果您使一个char*ptr存储整数变量的地址,会发生什么
- 为什么我会在不存储 ptr 的情况下调用新
- 我应该通过引用、值或ptr来存储一个完全封装的成员吗