0

この例では、プレイヤーをファクトリに追加しようとしています。私はポインターにかなり慣れていないので、何が間違っているのかわかりません。

私のファクトリークラスには次のものがあります:

void Factory::addPlayer(const Player& player)
{
    m_player.push_back(player);
}

プログラムでは、次のように追加しようとしています:

Factory* fact = new Factory();

Player* c = new Player(1, 2, 100, "Name");

fact->addPlayer(*c);

ただし、デバッグすると、「c」インスタンスは変更されません。

私は適切に参照していませんか?誰かが助けてくれたり、正しい方向を指し示すことができれば、助けていただければ幸いです。

4

1 に答える 1

0

何が起こるかというと、std::vector参照やポインターではなく、値を保持するということです。したがって、これを行うと:

 m_player.push_back(player);

Playervector は、渡されたの独自のコピーを格納します。それを行ったら、ベクトルの要素に対して実行されたアクションは、何cを指すかに影響を与えるべきではありません。

于 2013-02-09T12:54:35.353 に答える