gpt4 book ai didi

c++最后创建的对象

转载 作者:行者123 更新时间:2023-11-30 01:13:48 24 4
gpt4 key购买 nike

我想弄清楚一件事。我已经尝试了 2 天并且已经搜索了很多,所以如果已经有答案,很抱歉我没有找到它。

我想弄清楚的是:

    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

我希望这能说明我想弄清楚的是什么。如果需要任何其他信息,请询问。

感谢您的帮助。

最佳答案

创建一个创建对象的工厂,并让工厂跟踪创建的对象。

class Factory {
Unit* createUnit() {
Unit *newUnit = new Unit();
// keep track of new objects
return newUnit
}
};

class Unit {
friend Factory
protected:
Unit();
};

关于c++最后创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com