gpt4 book ai didi

c++ - 离开功能后丢失一些数据

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:00 26 4
gpt4 key购买 nike

我有一个包含这些 vector 的类:

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();
}

//-------------------------------------------- ----

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);

};

在代码的某处我执行了这样的功能:

Car *car = mainMenu.searchForCarById(idOfVehicle);

Car* MainMenu::searchForCarById(int id) {
for (Car elem : vehicles) {
if (elem.getIdInSystem() == id) {
return &elem;
}
}
}

在调试时我一步一步地执行这段代码,这个简单的函数可以正确地搜索汽车,但是每当我从函数中返回时,每个字符串变量都会消失。例如,在 name 变量中,我收到了 ""。我认为重要的是要提到只有字符串会消失! int 保持原样。我做错了什么?

最佳答案

改变这一行

for (Car elem : vehicles)

for (Car& elem : vehicles)

否则,您将保存一个指向超出范围的局部变量的指针,因此需要处理 dangling pointer

关于c++ - 离开功能后丢失一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com