c++ - 如何访问 "boost::function"中的类实例(对象)指针?

标签 c++ boost pointer-to-member boost-function

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/

相关文章:

c++ - 向用户显示异常调试信息

c++ - 使用SSE2缩放字节像素值(y = ax + b)( float )?

c++ - 我应该使用 numeric_limits 还是 C limit 宏?

c++ - boost::serialization:是否可以避免使用模板函数?

c++ - map 中的两个键值可以相同吗

c++ - 模板将运算符转换为指向成员函数语法的指针如何工作

c++ - 'Node' 没有命名一个类型链表

c++ - Libconfig 编辑配置值

c++ - 没有 typedef 的结构 - 不能在指向成员的指针中使用

c++ - 向下转换指向成员函数的指针。这是合法的用法吗?