gpt4 book ai didi

C++两次传递函数指针导致问题

转载 作者:行者123 更新时间:2023-11-28 05:34:59 25 4
gpt4 key购买 nike

我有一个函数指针,我试图将其传递给一个类方法,其中将调用 pthread_create 来传递该参数。但是我遇到了一些错误,并且不确定我应该从这里去哪里。

void (*FuncPointer)(void*);
FuncPointer = random_function;
ThreadPool.Task(FuncPointer);


int IOThreadPool::Task(void* (*FuncPointer)(void*))
{
pthread_t NewThread;

int rc = pthread_create(&NewThread, NULL, FuncPointer, (void *) (intptr_t) IOThreadPool::Threads.size() + 1);

main.cpp:57:29: 错误:从“void* (*)()”到“void (*)(void*)”的无效转换 [-fpermissive]

请解释为什么即使我将它作为 void* (*)(void*) 传递,我得到 void* (*)()。我很困惑,我的头已经开始疼了!

谢谢

最佳答案

invalid conversion from ‘void* (*)()’ to ‘void (*)(void*)’

你忘了给我们看random_function的声明,但是从错误信息来看,它似乎是

void* ranfom_function()

由于函数的签名与FuncPointer 的签名不匹配(ranfom_function 缺少参数,并且返回类型不同),您会得到错误。


错误未显示的另一个错误:FuncPointer 的返回类型与 IOThreadPool::Task 接受的参数的返回类型不匹配(void与无效*)。


解决方案:声明instad

void* ranfom_function(void*)

void* (*FuncPointer)(void*)

关于C++两次传递函数指针导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38529029/

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