我有一个包含这些向量的类:
class MainMenu {
private:
std::vector <Car> vehicles;
std::vector <Instructor> instructors;
std::vector <Trainee> trainees;
std::vector <Lesson> lessons;
public:
std::vector<Car>& getVehicles();
std::vector<Instructor>& getInstructors();
std::vector<Trainee>& getTrainees();
std::vector<Lesson>& getLesson();
}
Run Code Online (Sandbox Code Playgroud)
// ------------------------------------------------ -
class Car : public Vehicle {
public:
static MARKA convertStringToMarka(std::string name);
Car(std::string numberPlate, MARKA marka, bool roadWorthy);
Car() {};
Car(int id,std::string numberPlate, MARKA marka, bool roadWorthy);
};
Run Code Online (Sandbox Code Playgroud)
在代码的某处我执行这样的功能:
Car *car = mainMenu.searchForCarById(idOfVehicle);
Car* MainMenu::searchForCarById(int id) {
for (Car elem : vehicles) {
if (elem.getIdInSystem() == id) {
return &elem;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在调试时我会逐步执行此代码,这只是正确搜索汽车的功能,但每当我从功能返回时,每个变量都是字符串消失.例如,在name变量I中收到"".我认为重要的是要提到只有字符串消失!int保持原样.我究竟做错了什么?
改变这一行
for (Car elem : vehicles)
Run Code Online (Sandbox Code Playgroud)
至
for (Car& elem : vehicles)
Run Code Online (Sandbox Code Playgroud)
否则,您将保存指向超出范围的局部变量的指针,因此可以对付悬空指针
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |