成员函数的boost::function没有target()
No target() of boost::function of a member function
我试图以这种方式获得一个指向函数的指针:
boost::function<void(float)> Function;
Function = boost::bind(&myClassType::myMemberFunction, this, _1);
void(*)(float) finalFunction = *Function.target<void(*)(float)>();
/* crash becouse Function.target<void(*)(bool)>() is null */
但是我不能得到指针。我哪里错了?我做了什么不被允许的事吗?
(我必须将finalFunction传递给lua_register.)
function::target()
定义如下(我使用c++ 11草案,我认为这比boost的参考更清晰):
per c++ 0x n3290 20.8.11.2.5[function .wrap. function .targ]/3
返回:如果target_type() == typeid(T)一个指向存储函数目标的指针;否则为空指针。
在您的情况下,T
是您的类型void(*)(float)
,但Function.target_type()
根本不是,它是用于初始化boost::函数的boost表达式的类型。
简而言之,是的,这是不允许的。解决方法并不明显,但这里有一个:将boost::函数降级为普通函数指针
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 如果没有malloc,链表实现将失败
- 数组索引的值没有增加
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 变量没有改变?通过向量的函数调用
- 没有名称的C++模板参数
- 在线编译器中的分段C++没有打印消息
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 没有用于初始化C++中的变量模板的匹配构造函数
- 调用'begin(int [n])'没有匹配函数
- 使用C++程序合并排序没有得到正确的输出
- 为什么在这个代码结束循环中没有得到结束
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 成员函数的boost::function没有target()