Я пытаюсь выяснить что-то одно. Я пытаюсь в течение 2 дней и уже много раз искал, поэтому, если уже есть ответ, я сожалею, что не нашел его.C++ Последний созданный объект
То, что я пытаюсь выяснить это:
class Unit {
public:
static vector< Unit* > Units_array;
static Unit* Last_created_unit;
Unit();
Unit(string,int,int);
private:
some private vars
}
и чем я есть .cpp файл с определениями, а также. Я хочу знать: когда я вызываю конструктор, есть способ сохранить новый объект в переменной Last_created_unit или нажать его в Units_array. Я думал, что было бы лучше использовать указатели, потому что я хочу, чтобы это просто указатель на фактический новый объект, который я создал. Но когда я начинаю изменять члены объекта, он действует, как будто у меня два разных объекта, потому что в нем есть разные значения.
Unit::Unit(string name, int GUID, int faction){
Last_created_unit = this;
}
Так я попытался сохранить его в переменной, но как я сказал, что он действует как два разных объекта. Потому что, когда я изменяю какой-то элемент фактического созданного объекта, чем элемент, измененный с помощью сохраненного указателя, имеет значение по умолчанию и наоборот.
Я хотел бы сделать что-то вроде следующего, но прямо в конструкторе.
Last_created_unit = new Unit("some_name", 1, 1);
Просто сохраните только что созданный объект (возможно, указатель на него) этой переменной при его создании.
Я покажу вам путь его действия
//create new object
Unit player = Unit("something",100,1);
//our line Last_created_unit = this; have its value from constructor, seems fine.
//than we change, for example int Health (Default 100) through our function SetHealth()
Last_created_unit->SetHealth(90);
//than we retrieve our Health GetHealth()
player.GetHealth(); // output = 100
Last_created_unit->getHealth() // output = 90
Я надеюсь, что это показывает, что я пытаюсь выяснить. Если нужна другая информация, просто спросите.
Спасибо за помощь.
Это не выглядит возможным, но это трудно для меня, чтобы сказать без работоспособной пример. Не могли бы вы объединить несколько блоков кода в один пример, который я могу скомпилировать и запустить для себя? –
Я не могу воспроизвести вашу проблему здесь: https://ideone.com/lJVKUR –
«Когда я вызываю конструктор» - ** вы? ** Вы уверены, что имели в виду «звонок»? –