我的代码在
中 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
值初始化新的对象旅行者。怎么做?
答案 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.
};