我可以在所述对象的构造函数中创建指向该对象的指针吗?

问题描述 投票:0回答:1

目标是,每次创建Car类的对象时,都会创建该对象的指针并将其放置在“ car Registry”中。

这是我所拥有的:

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的概念上苦苦挣扎,如果确实需要在这里使用的话。如果这在其他地方得到回答,我深表歉意。在发布之前,我合法搜索了一段时间。我可能没有使用正确的关键术语来设置这些内容。

谢谢。

c++ object pointers
1个回答
0
投票

您已经知道答案了,因为您在问题中陈述了它:

[我知道我需要使用“ this”或某种东西表示此创建的Car对象需要为其创建一个指针,然后将该指针放入CarRegisterManager的registerCar函数中。

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

Car(CarRegisterManager* carRegisterManager) {
    carRegisterManager->registerCar(this);
}
© www.soinside.com 2019 - 2024. All rights reserved.