gpt4 book ai didi

c++ - 成员函数的 boost::function 没有 target()

转载 作者:行者123 更新时间:2023-11-28 08:21:07 25 4
gpt4 key购买 nike

我试图通过这种方式获取指向函数的指针:

 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's reference 更清晰一些)如下:

根据 C++0x n3290 20.8.11.2.5[func.wrap.func.targ]/3

Returns: If target_type() == typeid(T) a pointer to the stored function target; otherwise a null pointer.

在你的例子中,T 是你的类型 void(*)(float),但是 Function.target_type() 不是all,它是用于初始化 boost::function 的 boost 表达式的类型。

所以简而言之,是的,这是不允许的。解决方法并不明显,但这里有一个:demote boost::function to a plain function pointer

关于c++ - 成员函数的 boost::function 没有 target(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5812483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com