离开功能后丢失一些数据

Mik*_*key 0 c++

我有一个包含这些向量的类:

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保持原样.我究竟做错了什么?

Cor*_*mer 5

改变这一行

for (Car elem : vehicles)
Run Code Online (Sandbox Code Playgroud)

for (Car& elem : vehicles)
Run Code Online (Sandbox Code Playgroud)

否则,您将保存指向超出范围的局部变量的指针,因此可以对付悬空指针