gpt4 book ai didi

c++ - 将 vector 传递给函数

转载 作者:行者123 更新时间:2023-11-28 03:07:32 24 4
gpt4 key购买 nike

我的 main() 中有以下内容:

vector<Person*> alist;
add(alist);
printDetail(alist);

然后,在另一个文件中,我称之为function.cpp,在这个文件中,我有以下方法:

void add(vector<Person*> &mylist)
{
Person temp_p("firstname1","lastname1",20);

mylist.push_back(new Person("firstname2","lastname2",20));
mylist.push_back(&temp_p);

printDetail(mylist);
}

void printDetail(vector<Person*> mylist)
{
for(int i=0;i<mylist.size();i++)
{
mylist[i]->display();
}
}

当我运行这个程序时,add() 方法中的 printDetail(mylist) 将毫无问题地打印出两个结果,但是在 main(),只有firstname2会被打印出来。

谁能告诉我为什么会这样?

最佳答案

当你这样做时:

mylist.push_back(&temp_p);

您正在将指向局部变量的指针存储在 vector 中。当函数返回时,它指向的对象不复存在,所以你的 vector 留下了一个悬空指针。这会导致未定义的行为

关于c++ - 将 vector 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336135/

24 4 0
文章推荐: c++ - 在文件中存储类的类型
文章推荐: c++ - 如何刷新图形避免黑屏?
文章推荐: c++:制作链接列表的 vector
文章推荐: PHP 在 foreach 循环中每第 10 个 DB 元素后插入
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com