Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用另一个对象指针初始化类的实例?_C++_Class_Pointers_Object_Constructor - Fatal编程技术网

C++ 如何使用另一个对象指针初始化类的实例?

C++ 如何使用另一个对象指针初始化类的实例?,c++,class,pointers,object,constructor,C++,Class,Pointers,Object,Constructor,我有一个密码在哪里 class Passenger; class Reservation { std::string coach; int seat_number; Passenger * traveller; public: Reservation (Passenger * pas, std::string coch, int seat); void showReser

我有一个密码在哪里

   class Passenger;

   class Reservation {
           std::string coach;
           int seat_number;
           Passenger * traveller;
   public:
          Reservation (Passenger * pas, std::string coch, int seat);
          void showReservation();
  };
然后定义函数

Reservation::Reservation(Passenger * pas, string coch, int seat) : coach(coch), seat_number(seat) {
           traveller = new Passenger(pas);
   }
当我这样做时,这显示了一个错误


如果我不使用
*
而使用
&
,它将起作用。我想用
pas
值初始化新对象Traveler。怎么做?

您在这里混合了两种想法。要复制指针,请执行以下操作:

traveller = pas;
或者要对对象进行深度复制:

traveller = new Passenger(*pas);
您想要哪个取决于您想要如何使用
预订
。它是否拥有自己的
乘客
?似乎
预订
不应该拥有
乘客
,所以第一个可能就是您想要的

请注意,如果使用智能指针表示所有权,这一点可能会更清楚:

class Reservation {
    std::string coach;
    int seat_number;
    std::shared_ptr<Passenger> traveller;

    // etc.
};
班级预订{
字符串coach;
国际席位号;
std::共享的ptr旅行者;
//等等。
};

您正在寻找
旅行者=新乘客(*pas)很可能,没有理由让乘客*旅客,应为
旅客旅客