错误 C2440:"=":无法从 'char *(__cdecl *)(int,int)' 转换为 en 'GetItemText_t'

error C2440: '=' : cannot convert from 'char *(__cdecl *)(int,int)' to en 'GetItemText_t'

本文关键字:int 转换 GetItemText en char C2440 错误 cdecl      更新时间:2023-10-16

我在代码中收到错误(代码不是我的,它只是在其他网站上发布的)

我收到此错误:

错误 C2440:"=":无法从"字符 *(__cdecl *)(整数,整数)"转换为 en "GetItemText_t"

这是代码:

char* TheatreMenu_GetItemText(int index, int column)
{
    if( index >= 0 && index < uiDemoInfo.numDemos)
    {
        switch(column)
        {
        case 0:
            return uiDemoInfo.demos.at(index).demoName;
            break;
        case 1:
            return UI_LocalizeMapName(uiDemoInfo.demos.at(index).mapName);
            break;
        }
    }
    return "";
}
void PatchMW2_TheatreMenu()
{
    TheatreMenu_Feeder.feeder = 10.0f;
    TheatreMenu_Feeder.GetItemCount = TheatreMenu_GetItemCount;
    TheatreMenu_Feeder.GetItemText = TheatreMenu_GetItemText;
    TheatreMenu_Feeder.Select = TheatreMenu_Select;
    UIFeeders.push_back(TheatreMenu_Feeder);
    AddUIScript("loadDemos", TheatreMenu_UIScript_LoadDemos);
    AddUIScript("FixDemoServer", TheatreMenu_UIScript_FixDemoServer);
    AddUIScript("LaunchDemo", TheatreMenu_UIScript_LaunchDemo);
    strcpy((char*)(0x6FB620), "oldrec");
    strcpy((char*)(0x708238), "oldstoprec"); 
    Cmd_AddCommand("record", customRecordFunc, &customRecord, 0);
    Cmd_AddCommand("stoprecord", customStopRecordFunc, &customStopRecord, 0);
}

错误来自此行:

TheatreMenu_Feeder.GetItemText = TheatreMenu_GetItemText;

希望你能快点帮我,提前谢谢。

亲切克里斯

TheatreMenu_GetItemText是一个

函数名称,我不确定TheatreMenu_Feeder.GetItemText的类型,因为UIFeeder_t TheatreMenu_Feeder;虽然你不支持UIFeeder_t的定义。

是什么导致此错误?你可以查看UIFeeder_t.GetItemText的定义。和TheatreMenu_GetItemText的定义一样吗?


顺便说一句,关于这个功能.

char* TheatreMenu_GetItemText(int index, int column)
{
    if( index >= 0 && index < uiDemoInfo.numDemos)
    {
        switch(column)
        {
        case 0:
            return uiDemoInfo.demos.at(index).demoName;
            break;
        case 1:
            return UI_LocalizeMapName(uiDemoInfo.demos.at(index).mapName);
            break;
        }
    }
    return "";
}

最后一行,我觉得return NULL可能会更好。当然,如果这里改了,一些相关的代码可能需要相应的改动