Идентификатор не найден в непрограммном цикле

Я попытался найти ошибку "идентификатор не найден" только для того, чтобы найти сообщения, в которых функция должна быть перемещена за пределы основного цикла или должна использовать предварительное объявление. Тем не менее, мой сценарий используется в качестве модуля для игрового движка, поэтому не имеет реального основного цикла, и рассматриваемая функция вызывается другой функцией над ошибочной строкой без проблем:

// Create a Steam ID
CSteamID Steam::createSteamID(uint32 steamID, int accountType){
    CSteamID cSteamID;
    if(accountType < 0 || accountType >= k_EAccountTypeMax){
        accountType = 1;
    }
    cSteamID.Set(steamID, EUniverse(k_EUniversePublic), EAccountType(accountType));
    return cSteamID;
}

// Set a Steam user as someone recently played with
void Steam::setPlayedWith(int steamID){
    if(SteamFriends() == NULL){
        return;
    }
    CSteamID friendID = createSteamID(steamID);
    SteamFriends()->SetPlayedWith(friendID);
}

// Get friend's Steam username
String getFriendPersonaName(int steamID){
    if(SteamFriends() == NULL || steamID == 0){
        return "";
    }
    CSteamID friendID = createSteamID(steamID);
    bool isDataLoading = SteamFriends()->RequestUserInformation(friendID, true);
    if(!isDataLoading){
        return SteamFriends()->GetFriendPersonaName(friendID);
    }
}

Функция создания идентификатора находится на самом верху, и эти две функции появятся намного позже. Первый (setPlayedWith) не вызывает проблем, но второй (getFriendPersonaName) завершается неудачно с: 'createSteamID': идентификатор не найден при компиляции скрипта.

Я немного растерялся и, надеюсь, кто-то может указать мне правильное направление.

1 ответ

Решение

Если getFriendPersonaName() является функцией-членом, то вы забыли правильно определить ее, чтобы она выглядела следующим образом:

string Steam::getFriendPersonaName(int steamID)...

если это не участник, то вы не можете получить к нему доступ. однако вы можете получить к нему доступ только в том случае, если getFriendPersonaName() является функцией-другом, где вы должны отредактировать подпись:

String getFriendPersonaName(int steamID, const steam& rhs);
Другие вопросы по тегам