これはおそらく簡単なことですが、私は少し困惑しています。ベクトルがうまく動作しないという問題がありましたが、今では原因が見つかったようです。これが私のPlayer
クラスの骨抜きバージョンです。
class Player {
private:
std::string _firstName;
std::string _lastName;
public:
Player(std::string firstName, std::string lastName) {
_firstName = firstName;
_lastName = lastName;
};
Player(const Player& otherPlayer) {
_firstName = otherPlayer._firstName.c_str();
_lastName = otherPlayer._lastName.c_str();
std::cout << "Created " << _firstName << " " << _lastName << std::endl; // Why doesn't _firstName and _lastName contain anything?
};
std::string GetName() { return _firstName + " " + _lastName; };
};
int main(int argc, const char * argv[])
{
Player player1 = Player("Bill", "Clinton");
Player player2 = Player(player1);
std::cout << "Player: " << player2.GetName() << std::endl;
return 0;
}
出力はわずかPlayer:
です。特にこのようなアドバイスに照らして、私のコピー コンストラクターが自分のやりたいことを実行しない理由がわかりません(ザック ハウランドのコメントが - の部分を説明していc_str();
ます)。私は 3 のルールに違反していますか (ところで、まだ完全には理解できていません)。誰かが私を正しい方向に向けることができれば、本当に感謝しています!