【问题标题】:How to initialize instance of a class using another object pointer?如何使用另一个对象指针初始化一个类的实例?
【发布时间】:2015-03-19 08:37:06
【问题描述】:

我有一个代码在哪里

   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 值初始化新的对象旅行者。怎么办?

【问题讨论】:

  • 你在找traveller = new Passenger(*pas);吗?很可能Passenger * traveller;没有理由,应该是Passenger traveller;

标签: c++ class pointers object constructor


【解决方案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.
};

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多