ошибка C2440: «=»: невозможно преобразовать из «char * (__cdecl *) (int, int)» в en «GetItemText_t»

0

Я получаю ошибку в коде (код не мой, он просто был выпущен на другом сайте)

Я получаю эту ошибку:

ошибка C2440: '=': невозможно преобразовать из 'char * (__ cdecl *) (int, int)' в 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;

Надеюсь, вы поможете мне быстро, спасибо заранее.

Сердечно, Крис

  • 3
    Как вы объявили TheatreMenu_Feeder.GetItemText
  • 2
    Есть ли typedef, приводящий к типу GetItemText_t?
Показать ещё 3 комментария
Теги:

1 ответ

0

TheatreMenu_GetItemText - это имя функции, я не уверен в типе TheatreMenu_Feeder.GetItemText потому что UIFeeder_t TheatreMenu_Feeder; в то время как вы не поддерживали определение UIFeeder_t.

что делает эту ошибку? Вы можете проверить определение UIFeeder_t.GetItemText же самое, что TheatreMenu_GetItemText определение TheatreMenu_GetItemText?


BTW, об этой функции.

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 может быть лучше. Конечно, если здесь изменено, некоторым связанным кодам может потребоваться соответствующее изменение

  • 0
    Все строковые литералы как в C, так и в C ++ всегда имели статическую продолжительность хранения: они существуют во всей программе, даже после возврата из функции.
  • 0
    @hvd ты прав.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню