コードが NULL ポインターになっていると、デバッガーでセグメンテーション違反エラーが発生しました。
この関数はエラーを行います:
void Player::nullActive()
{
activeCharacter = NULL;
}
activeCharacter は Character クラスの単なるポインタです。
また、ここにプレーヤークラスがあります:
class Player
{
public:
Player(unsigned int accID, std::string aID, bool isBanned); //constructor, allow only create object id-s one time
~Player();
std::string getAtheriusID(); //return account id
unsigned int getAccountID(); //return atherius id
boost::ptr_vector<Character> characters;
bool isBanned();
bool hasActiveCharacter();
void nullActive();
void setActiveCharacter(Character * character);
void setConnection(CSConnection * con);
CSConnection * getConnection();
Character * getActiveCharacter();
unsigned int atheriusCoins;
protected:
unsigned int accountID; //account unique id
std::string atheriusID; //account name / atherius id
bool banned;
private:
CSConnection * connection;
Character * activeCharacter = NULL;
};
そしてデバッガの出力:
プログラム受信信号 SIGSEGV、セグメンテーション違反。At F:\EternalHeroes\server\src\game\src\Player.cpp:36 続行中... プログラムが信号 SIGSEGV を受信しました。セグメンテーション違反です。At F:\EternalHeroes\server\src\game\src\Player.cpp:36 続行中... [Inferior 1 (プロセス 11552) はコード 030000000005 で終了しました] Debugger はステータス 0 で終了しました