【发布时间】:2011-10-18 07:03:30
【问题描述】:
由于某种原因,当我尝试在 std::list (playerlist) 中读取指向对象(GamePlayer) 的指针的属性时,它起初可以工作,但是当我稍后尝试在另一个函数中访问它时我得到一堆随机数,而不是客户端套接字的数字。那是一口,对不起。我希望有人能对这种情况有所了解。我将包含缺陷代码的简化版本。
class GameRoom {
list<GamePlayer*> playerlist;
locigPort( LogicObj );
}
bool GameRoom::logicPort( LogicObj logit ) { // This is room[1]
list<GamePlayer*>::iterator it;
for (it = playerlist.begin(); it != playerlist.end(); it++){
cout << "socket numbers " << (*it)->socketno << endl;
/* (*it)->socketno gives me a bunch of random numbers,
not the socket numbers I was looking for! */
}
return true;
}
bool RoomDB::addPlayer( GamePlayer *playerpoint ) {
roomlist[1].playerlist.push_back( playerpoint );
// This adds the player object to the Gameroom object
cout << "player point " << playerpoint->socketno << " roomno: " << roomno;
// This shows everything should be ok so far
return true;
}
【问题讨论】:
-
检查你的套接字在你的好读和坏读之间发生了什么。如果您可以取消引用指针,则列表可能没有任何问题。
-
@Roland:这种错误可以通过sscce来诊断。