मैं यह पता लगाने की कोशिश कर रहा हूं कि निम्न कोड क्यों काम नहीं कर रहा है, और मुझे लगता है कि यह चार प्रकार के कुंजी के रूप में * का उपयोग करने के साथ एक मुद्दा है, हालांकि मुझे यकीन नहीं है कि मैं इसे कैसे हल कर सकता हूं या यह क्यों हो रहा है। मेरे द्वारा उपयोग किए जाने वाले अन्य कार्यों (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
एक बार उपयोग करने के लिए अपना कोड बदलें , और बाद में खुश रहें।