我有这个结构
typedef struct _flight {
FlightId flightId;
int totalPlaces;
int booked;
float currentPrice;
float initialPrice;
void Print(int index);
void RecalculatePrice();
bool BookSeats(int amount);
} Flight;
这引起了麻烦,BookSeats:
bool Flight::BookSeats(int cantidad) {
if (booked + cantidad <= totalPlaces) {
booked = booked + cantidad;
RecalculatePrice();
return true;
}
return false;
}
当我调用BookSeats时,值的变化不会存储在方法的末尾(比如当你将一个变量按值传递给参数时),我试着使用
this->booked = booked + cantidad; // but doesn't work too;
我做错了什么?我不知道是否是引用问题但是...变量和void都在结构内部。我不明白。
答案 0 :(得分:0)
在使用变量之前,您需要通过设置值来初始化它。 如果您的编译器接受c ++ 11,您可以直接在类/结构中进行,如下所示:
struct Flight {
int booked = 0; // in-class initialization (c++11)
};
对于较旧的c ++编译器,Flight的构造函数应该初始化其成员:
struct Flight {
Flight() : booked(0) {}
int booked;
};