gpt4 book ai didi

c++ - 回调方法显示错误“void(*) 类型的值不能用于初始化类型的实体

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

我有一个回调方法。它的签名是

typedef unsigned int event_id_t;
typedef void(__stdcall* event_cb)(int service_id, event_id_t event_id);

然后我定义了一个回调方法如下

void event_callback(int service_id, event_id_t event_id) {
std::cout << _func_ << ": service_id: " << service_id << "; event_id: " << event_id << std::endl;
}

但是当我将回调方法分配给变量时出现错误

event_cb cb = event_callback;

这一行报错

a value of type "void(*) (int serviceid....... cannot be used to initialize an entity of type event_cb

最佳答案

严格来说:

typedef void(__stdcall* event_cb)(int service_id, event_id_t event_id);

void event_callback(int service_id, event_id_t event_id) {
std::cout << _func_ << ": service_id: " << service_id << "; event_id: " << event_id << std::endl;
}

属于不同类型(由于调用约定),因此分配失败。

要修复它,只需在您这边添加 __stdcall 即可:

void __stdcall event_callback(int service_id, event_id_t event_id) {}

关于c++ - 回调方法显示错误“void(*) 类型的值不能用于初始化类型的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709419/

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