다음 코드가 작동하지 않는 이유를 알아 내려고 노력하고 있으며 char *를 키 유형으로 사용하는 데 문제가 있다고 가정하고 있지만 어떻게 해결할 수 있는지 또는 왜 발생하는지 잘 모르겠습니다. 내가 사용하는 다른 모든 기능 (HL2 SDK에서)이 사용 char*
하므로 사용 std::string
하면 불필요한 합병증이 많이 발생합니다.
std::map<char*, int> g_PlayerNames;
int PlayerManager::CreateFakePlayer()
{
FakePlayer *player = new FakePlayer();
int index = g_FakePlayers.AddToTail(player);
bool foundName = false;
// Iterate through Player Names and find an Unused one
for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it)
{
if(it->second == NAME_AVAILABLE)
{
// We found an Available Name. Mark as Unavailable and move it to the end of the list
foundName = true;
g_FakePlayers.Element(index)->name = it->first;
g_PlayerNames.insert(std::pair<char*, int>(it->first, NAME_UNAVAILABLE));
g_PlayerNames.erase(it); // Remove name since we added it to the end of the list
break;
}
}
// If we can't find a usable name, just user 'player'
if(!foundName)
{
g_FakePlayers.Element(index)->name = "player";
}
g_FakePlayers.Element(index)->connectTime = time(NULL);
g_FakePlayers.Element(index)->score = 0;
return index;
}
std:string
한 번만 사용하도록 코드를 변경 하고 나중에 행복해 지세요.