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

时间:2015-01-20 23:04:50

标签: 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 showReservation();
  };

然后定义函数

Reservation::Reservation(Passenger * pas, string coch, int seat) : coach(coch), seat_number(seat) {
           traveller = new Passenger(pas);
   }

当我这样做时,这显示错误。

如果不使用*,我会使用&。我想用pas值初始化新的对象旅行者。怎么做?

1 个答案:

答案 0 :(得分:1)

你在这里混合两个想法。要么要复制指针:

traveller = pas;

或者您想要对该对象进行深层复制:

traveller = new Passenger(*pas);

无论您想要什么,取决于您希望Reservation使用的方式。它是否拥有自己的Passenger?似乎Reservation不应该拥有Passenger,所以第一个可能就是你想要的。

请注意,如果您使用智能指针来表达所有权,则可能会更清楚:

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

    // etc.
};
相关问题