Search code examples
c++game-enginesteamworks-api

Indentifier not found in non-program loop script


I have tried to look up the "identifier not found" error only to find posts where the function must be moved outside the main loop or should use a forward declaration. However, my script is used as a module for a game engine thus has no real main loop and the function in question is called by a different function above the failing line with no issues:

// 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);
    }
}

The ID creation function sits at the very top and these two functions come much later. The first one (setPlayedWith) succeeds no problem but the second one (getFriendPersonaName) fails with: 'createSteamID': identifier not found when compiling the script.

I'm kind of at a loss and hopefully someone can point me in the right direction.


Solution

  • if getFriendPersonaName() is a member function then you have forgotten to define it the correct way so it will look like:

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

    if it is not a member then you can't access it. however you can Only access it if getFriendPersonaName() is a friend function where you should edit the signature to:

    String getFriendPersonaName(int steamID, const steam& rhs);