C ++指向map->秒指向不指向

时间:2014-09-09 14:48:52

标签: c++ pointers c++11

免责声明:我是C ++(学生)的新手,这是用于计算机实践的评估,所以请不要给我答案。如果你可以“引导”我的答案,以帮助我理解,那将非常感激。

所以,我有一张地图:

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

我有一个迭代器遍历这个地图并完成了(我写的):

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,但又一次,没有快乐。

我真的打砖墙怎么解决这个问题..任何帮助都非常感谢。

感谢。

1 个答案:

答案 0 :(得分:2)

首先,您需要一个引用而不是副本到map元素:

for (auto & m : mymap)
          ^

然后使用&地址)运算符获取指向其值的指针:

retVal = &m.second;
         ^

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