传入回调函数作为参数时出现Visual Studio错误

时间:2019-04-26 21:01:24

标签: c++ visual-studio true-type-fonts

我正在使用Visual Studio 2019,并且正在使用库加载字体数据(请参见此处:https://github.com/kv01/ttf-parser)。我收到一条错误消息,说我的函数看起来像我的函数没有正确的参数类型。我已经定义了要在.cpp文件中定义的实现内容 感谢您的任何提前帮助

Visual Studio错误:

E0167   argument of type "void (KDG_PhotoEditor::Layer::*)(void *args, void *font_data, int error)" is incompatible with parameter of type "TTFFontParser::TTF_FONT_PARSER_CALLBACK"    KDG_PhotoEditor C:\Users\Kieran\Desktop\C++\KDG_PhotoEditor\KDG_PhotoEditor\layer.cpp   251 

调用需要回调的函数的函数:

void Layer::add_text(string text, Font font, int x, int y){
    string full_path=FONT_BASE_PATH;
    full_path.append(font.name);
    full_path.append(".ttf");

    FontData font_data;
    uint8_t condition_variable=0;
    int8_t error=parse_file(full_path.c_str(), &font_data, &font_parsed, &condition_variable);

    while(!condition_variable){
        this_thread::sleep_for(chrono::milliseconds(1));
    }

    if(error){
        return;
    }

    FontData* font_data=(FontData*)current_parsed_font.font_data;
    current_parsed_font={};
}

回调函数:

void Layer::font_parsed(void* args, void* font_data, int error){
    current_parsed_font={args, font_data, error};
}

库使用的回调函数的定义

typedef void(*TTF_FONT_PARSER_CALLBACK)(void*, void*, int);

0 个答案:

没有答案