Hier ist ein Konstruktor für meine Spielklasse:C++ Eine Kopie eines Objekts übergeben oder einen Zeiger an ein Objekt übergeben?
// Construct a Game to be played with player on a copy of the board b.
Game(const Board& b, Player* player)
{
...
}
Hier ist, wie ich den Konstruktor bin mit:
Player p("Player Name");
Board b(6,3);
Game g(b, &p);
Wie funktionierts? Wird b kopiert?
Wenn ich einen Zeiger auf den Player speichern möchte, sollte ich einen privaten Ivar wie den folgenden erstellen?
private:
Player* _player;
...
// In Game constructor
_player = player;
Als Randbemerkung sein: Präfix nicht Ihre Variablen mit ‚_‘ in C++, da der ‚_‘ Präfix für den Compiler-Anbieter in C reserviert & C++. –
Welchen Namen sollte ich dann verwenden? – Elliot
Ich möchte kommentieren, dass dies gefährlich sein könnte (weshalb Vektor tatsächlich eine Kopie des Objekts macht vs eine Referenz aufnehmen, wenn Sie push_back aufrufen) - Beispiel https://gist.github.com/nadams810/6756139. Dieser Code funktioniert gut auf VC++/gcc ...aber das ist nur zufällig, da der Destruktor für CC aufgerufen wurde, also sollte x nicht mehr verwendbar sein. Ich sage nicht, dass Sie es benutzen sollten oder sollten - achten Sie nur auf den Umfang dessen, was Sie herumreichen. –