gpt4 book ai didi

c++ - 如何将 boost 绑定(bind)转换或转换为 C 函数指针?

转载 作者:IT老高 更新时间:2023-10-28 23:01:03 26 4
gpt4 key购买 nike

假设我有这个:

void func(WCHAR* pythonStatement) {
// Do something with pythonStatement
}

我需要像这样将它转换为 void 函数(void):

bind(func, TEXT("console.write('test')"))

现在我有这样的结构:

typedef void (__cdecl * PFUNCPLUGINCMD)();

struct FuncItem {
PFUNCPLUGINCMD pFunc;
// ...
};

如何将我的结构的 pFunc 设置为 bind(func, "something")? Bind 返回的 lambda_functor 不是函数指针,那么如何将这个仿函数转换为函数指针?

谢谢。


最终使用 the wrapping "solution" (GitHub)

最佳答案

我认为你不能,除非你将生成的 lamba_functor 设为全局变量。

在这种情况下,您可以声明一个调用它的函数:

void uglyWorkaround() {
globalLambdaFunctor();
}

并将 pFunc 设置为 uglyWorkaround()

编辑
只是一个旁注:如果你将静态文本绑定(bind)到函数调用,你可以完全省略 bind() 调用并只写:

void wrapper() {
func(TEXT("console.write('test')"));
}

并将 pFunc 设置为 wrapper()

关于c++ - 如何将 boost 绑定(bind)转换或转换为 C 函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962960/

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