Звучит так, будто вы хотите написать Копировать конструктор
Это похоже на конструктор или инициализатор, но принимает тот же класс в качестве параметра и создает новый класс. Например, ваш может выглядеть примерно так:
class GameState {
public:
GameState(const GameState& g) {
game_state_var_1 = g.game_state_var_1;
game_state_var_2 = g.game_state_var_2;
// ...
}
};
Тогда на практике вы будете использовать это так:
GameState g = GameState();
GameState duplicate_g = GameState(g);
Стоит также отметить, что если вы приехали из JavaScript справочная информация очень важно знать, что JavaScript - это уникальный язык. Ни функционально, ни объектно-ориентировано, но притворяется, что оба. Прежде чем написать новую функцию в своем классе, уделите немного времени, чтобы увидеть, поддерживает ли C ++ переопределяющие операции, чтобы сделать это в первую очередь.
Например, вы описали свою функцию makeCopyOf(gameState g)
, которую вы написали для своего класса GameState
, Но более идиоматическим c C ++ подходом было бы переопределить оператор = следующим образом:
class GameState {
public:
const GameState& operator=(const GameState& g) {
game_state_var_1 = g.game_state_var_1;
game_state_var_2 = g.game_state_var_2;
// ....
return *this;
}
};
Это означает, что вы можете просто использовать оператор присваивания, чтобы установить значения вашего объекта GameState
на значение еще один GameState
объект, подобный этому:
GameState g1 = GameState(1);
GameState g2 = GameState(2);
g1 = g2;
// g1 now has the same data as g2
Надеюсь, это поможет, без какого-либо кода трудно напрямую ответить на ваш вопрос.