我试图将参数传递给作为参数传递的函数指针.
码:
void Test(wchar_t* a, wchar_t* b)
{
// ...
}
void Test2(void(*Func)(wchar_t*, wchar_t*))
{
// ...
}
int main()
{
Test2(Test(L"Hello", L"Testing"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
"void"类型的参数与"void(*)(wchar_t*,wchar_t*)"类型的参数不兼容
我如何解决这个问题以实现我想要实现的目标?
编辑:抱歉不清楚.我实际上要完成的是将一个函数注入子进程并传递两个参数(wchar_t*,wchar_t*),以便我可以使用它们.但是main函数可以是void或int argc,char**argv.所以我通过简单地使用全局变量完成了我想要实现的目标
你可能想要有类似的东西
void Test2(void(*Func)(wchar_t*, wchar_t*),wchar_t* x, wchar_t* y)
{
(*Func)(x,y);
}
int main()
{
Test2(Test,L"Hello", L"Testing");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代替.
至于你的评论
我如何使用模板在C++中执行此操作?
我能想到
template<typename Param>
void Test2(void(*Func)(Param, Param), Param x, Param y) {
(*Func)(x,y);
}
void Test(wchar_t* a, wchar_t* b);
int main() {
Test2(Test,L"Hello", L"Testing");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这应该工作正常.
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |