C++,带指针的结构,创建第一个对象

C++, struct with pointers, create first object

本文关键字:创建 一个对象 结构 指针 C++      更新时间:2023-10-16

我有以下结构Car:

struct Car {
public:
    integer number;
 Car  *down,  *right;
  Car(double a, Car b,  Car f): number(a), right(&f){}
};

例如,我想建立一个类似汽车链的模型,每辆车都有一个指向下一辆车的指针。我的问题是,第一辆车应该指向任何地方,指向NULL。(可变数字与汽车在链条中的位置无关)。我试过这样的东西:

Car* first = new Car(23421,NULL);
car.cpp:39:35:错误:对"car::car(int,NULL)"的调用没有匹配的函数car.cpp:39:35:注意:候选人是:car.cpp:28:3:注意:car::car(int,car)car.cpp:28:3:注意:参数2没有从"int"到"car"的已知转换car.cpp:24:8:注意:car::car(const car&)car.cpp:24:8:注意:候选者需要1个参数,提供2个

我怎么能指向一个无处可去的地方?

您应该声明一个Car变量并将指针成员赋值为NULL。这应该在默认构造函数中完成,这样您就不必每次都手动执行。

Car mycar;
    mycar.down =NULL;
    mycar.right =NULL;

比,以后你可以随心所欲地用链条拴住你的车:

mycar.down = mySecondCar;
mycar.right = myThirdCar;

此构造函数

Car(double a, Car b,  Car f): number(a), right(&f){}

无效。可以使用指向局部变量的指针。按照以下方式更改构造函数

Car(double a, Car *b,  Car *f): number(a), right(f){}