gpt4 book ai didi

指向 map->second 的 C++ 指针不指向

转载 作者:行者123 更新时间:2023-11-28 02:41:42 27 4
gpt4 key购买 nike

免责声明:我是 C++ 的新手(一名学生),这是为了评估计算机实践,所以请不要给我答案。如果您能“指导”我找到答案,以帮助我理解,那将不胜感激。

所以,我有一张 map :

std::map<std::string,MyClass> mymap;

我有一个迭代器遍历这张 map 并做一些事情(我写的):

MyClass *retVal;
for (auto m : mymap)
{
if (m.count() == 0)
*retVal = m.second;
}

return *retVal;

我不能只返回 m.second 所以我需要弄清楚如何让 *retVal 指向 m.second 的引用,而不是值。

我以为我有它,但调试器说不是这样。

我尝试添加 &m.second 但编译器不喜欢这样。

我试过了

for(<std::map<std::string,MyClass>::iterator myIter = mymap.begin(); myIter != tasks.cend(); ++myIter) 

将所有 .second 更改为 ->second,但同样,没有任何乐趣。

我真的碰壁了如何解决这个问题.. 非常感谢任何帮助。

谢谢。

最佳答案

首先,您需要 map 元素的引用,而不是拷贝:

for (auto & m : mymap)
^

然后使用&(address of)运算符获取指向其值的指针:

retVal = &m.second;
^

请注意,这是在分配指针 (retVal),而不是它指向的对象 (*retVal)。分配对象是错误的,因为它没有指向有效的对象。

关于指向 map->second 的 C++ 指针不指向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747650/

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