1

この質問が以前に尋ねられた場合は、事前にお詫び申し上げます。

私はグーグルですべてのスキルを使用しましたが、まだ何もしていないので、この質問が以前に回答されている場合は、回答をリンクしてください。基本的に質問を終了します。

とにかく、邪魔にならないように、私の問題は、クラス「Player.hpp」と、「プレーヤー」のロケーションシステムを定義した対応する「Player.cpp」があることです。値をうまく初期化できます(これはクラスの関数の1つです)が、プレーヤーが「play()」関数(ゲームの骨を保持し、別の.cppファイルにある)に移動すると、関数を使用して保存した場所には何も保存されていません...助けていただければ幸いです。

私が何を求めているのか理解できない場合は、コメントしてください。詳しく説明します。

以下のコード:

//Player.hpp
class player
{
public:
    std::string getLocation();
    void setLocation(std::string local);
    void initLocation();

private:
    std::string location;
};

//Player.cpp
void player::initLocation()
{
    player::location = "B0";
    return;
}
std::string player::getLocation()
{
    return player::location;
}
void player::setLocation(std::string local)
{
    player::location = local;
    return;
}

//Main.cpp
//....
player plays;
plays.initLocation();
//....

//Game.cpp
//...
player plays;
std::string local = plays.getLocation(); //When I check there isn't a value that gets stored...
if(local.find(...)...)

繰り返しますが、助けていただければ幸いです。このような質問が既に出されている場合はお詫び申し上げます。

編集:

部屋から部屋へと進行するにつれて保存される値も変更したいことを明確にする必要があったと思いplayerます(これは私が作成しているゾークスタイルのゲームであるため)

4

2 に答える 2

1

playerの各インスタンスが別々の場所にある可能性があると仮定するとplayer、コンストラクタのデフォルトの場所で の場所を初期化することで、この問題を解決できます。これにより の必要がなくなるためinitLocation()、 から呼び出す必要がなくなりますMain.cpp

//Player.hpp
class player
{
public:
    std::string getLocation();
    void setLocation(std::string local);

    player () : location("B0") {}

private:
    std::string location;
};
于 2013-08-22T23:40:45.273 に答える
0

staticクラス変数宣言の前を省略したように見えます。

class player
{
    // ...
    static std::string location;
};

...これにも定義が必要です。もちろん、定義は値を初期化するための主要な場所にもなります。

// Player.cpp
std:string player::location("B0");

初期化関数を不要にします。

于 2013-08-22T23:34:42.367 に答える