【问题标题】: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 抱歉,我误用了我听说过的一个术语。我的意思是我想在所述对象的创建/构造函数中创建一个对象的指针。我已经更新了标题以反映这一点。

标签: c++ object pointers


【解决方案1】:

您已经知道答案了,因为您在问题中已经说明了:

我知道我需要使用“this”之类的东西来表示这个创建的 Car 对象需要为其创建一个指针,然后将这个指针放入 CarRegisterManager 的 registerCar 函数中。

您可以使用 literal this 指针,例如:

Car(CarRegisterManager* carRegisterManager) {
    carRegisterManager->registerCar(this);
}

【讨论】:

  • 谢谢你,雷米。感谢您的回复。
猜你喜欢
  • 2013-03-07
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2021-07-25
  • 2018-03-07
  • 1970-01-01
相关资源
最近更新 更多