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)代码>很可能,没有理由让乘客*旅客代码>,应为旅客旅客代码>