将参数传递给函数指针

use*_*765 1 c++

我试图将参数传递给作为参数传递的函数指针.

码:

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.所以我通过简单地使用全局变量完成了我想要实现的目标

πάν*_*ῥεῖ 6

你可能想要有类似的东西

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)

这应该工作正常.