CClass inst;
boost::function<bool(int)> func = boost::bind(&CClass::Foo, &inst, _1);
在这种情况下, 我想访问 inst 的指针(&inst)或来自“func”的地址,如下所示。
CClass* pInstance = func.obj_ptr; (This is just a form that I want)
我该怎么办?
最佳答案
你不能。整点boost/std::function
是删除存储在其中的类型。要实现您正在谈论的内容,需要重新构造类型。由于 C++ 是一种静态类型语言,这意味着调用此类函数的代码必须显式提供返回的类型。类似于 func.value<TypeName>()
.
更重要的是,即使有,您所说的也是不可能的。唯一类型 function
知道的是 给定 的类型。这是 boost/std::bind
的返回值.如果不深入研究实现细节,该类型就无法广泛使用。
所以你要求的是不可能的。除非您自己将其存储在其他地方。
关于c++ - 如何访问 "boost::function"中的类实例(对象)指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10616780/