gpt4 book ai didi

c++ - 返回指针的段错误

转载 作者:行者123 更新时间:2023-11-30 00:51:14 24 4
gpt4 key购买 nike

我正在搜索一个 Contact 对象的 vector (虽然对象的类型不应该影响任何东西)并且如果找到它则返回指向该对象的指针,否则返回 null。下面是代码:

Contact* searchByLastName(string lname) {

for (auto iter = LIST.begin(); iter != LIST.end(); ++iter) {
Contact c = *iter; //Dereference
if (lname.compare(c.getLastName()) == 0) {
return &c;
}
}
return NULL;
}

如果该方法返回 NULL(即在 LIST 中未找到联系人),则代码可以正常工作。如果联系人在列表中,则程序会出现段错误。

我已经尝试使用 nullptr 而不是 NULL 并返回一个 void 指针而不是 null 指针(如果结果不是 NULL/nullptr,则将 static_cast 返回到 Contact*)。

我不确定为什么会出现段错误。我知道 NULL 在 C++ 中被定义为 0,但是使用 nullptr(它应该只是一个 void* 类型的指针,对吧?)并没有阻止段错误。

最佳答案

因为你要返回一个指向联系人的指针,所以返回迭代器指向的任何内容

return &(*iter);

代替

return &c;

关于c++ - 返回指针的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650315/

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