我可以在所述对象的构造函数中创建指向对象的指针吗?
Posted
技术标签:
【中文标题】我可以在所述对象的构造函数中创建指向对象的指针吗?【英文标题】:Can I create a pointer to an object in the constructor of said object? 【发布时间】:2020-06-13 18:42:22 【问题描述】:目标是每次创建 Car 类的对象时,都会创建该对象的指针并将其放置在“汽车注册表”中。
这就是我所拥有的:
class Car
private:
string color = "blah blah";
string make = "blah blah";
string model = "blah blah";
public:
Car(CarRegisterManager* carRegisterManager)
// This is where I want to "register" any object of this class with a pointer
// to reference of this created object inserted into the CarRegisterManager's vector or
// registered cars.
carRegisterManager->registerCar( /*pointer goes here*/ );
class CarRegisterManager
private:
std::vector<Car> registeredCars_;
public:
void registerCar(Car* car)
registeredCars_.push_back(car);
int main()
CarRegisterManager carRegisterManager;
CarRegisterManager* p_carRegisterManager = &carRegisterManager;
Car hondaCivic1(p_carRegisterManager); // When this is created, I want a pointer to it registered.
如您所见,我的部分解决方案是在创建 CarRegisterManager 时创建指向管理器对象的指针,以作为参数包含在任何 Car 对象的构造函数中,然后让构造函数对此进行处理。我知道我需要使用“this”之类的东西来表示这个创建的 Car 对象需要为其创建一个指针,然后将该指针放入 CarRegisterManager 的 registerCar 函数中。
我仍在为使用关键字 new 和 this 的概念而苦苦挣扎,如果这确实是我需要在这里使用的话。如果这在其他地方得到回答,我深表歉意。在发布此之前,我合法地搜索了一段时间。我可能没有使用正确的关键术语来设置这些内容。
谢谢。
【问题讨论】:
你说的“指向引用”是什么意思?粗略地说,引用是对象实例的别名。所以指向它的指针与指向被引用对象的指针相同。您不能形成指向引用本身的指针。 @JesperJuhl 抱歉,我误用了我听说过的一个术语。我的意思是我想在所述对象的创建/构造函数中创建一个对象的指针。我已经更新了标题以反映这一点。 【参考方案1】:您已经知道答案了,因为您在问题中已经说明了:
我知道我需要使用“this”之类的东西来表示这个创建的 Car 对象需要为其创建一个指针,然后将这个指针放入 CarRegisterManager 的 registerCar 函数中。
您可以使用 literal this
指针,例如:
Car(CarRegisterManager* carRegisterManager)
carRegisterManager->registerCar(this);
【讨论】:
谢谢你,雷米。感谢您的回复。以上是关于我可以在所述对象的构造函数中创建指向对象的指针吗?的主要内容,如果未能解决你的问题,请参考以下文章