如何编写类似GetObject这样的函数?

大侠,先看代码:我想通过一个函数GetTest,从m_mapTest这个map中获得指定ID的Test对象,但不希望获得这个对象在map中的指针(因为我需要对取得的对象进... 大侠,先看代码:

我想通过一个函数GetTest,从m_mapTest这个map中获得指定ID的Test对象,但不希望获得这个对象在map中的指针(因为我需要对取得的对象进行改变,但不想影响map中对应ID的该对应)

下面代码获得了map中对应ID的Test对象的指针,只要改变了GetTest方法返回的Test指针,就会随之改变map中对应ID的Test对象,但这不是我希望的。

请问大侠,我该怎么写?
hash_map<int,Test> m_mapTest;
struct Test
{
int num;
};
Test* GetTest(int id)
{
hash_map<int,Test>::iterator it = m_mapTest.find(id);
if (it!=m_mapTest.end())
{
return &(it->second);
}
return NULL;
}
展开
 我来答
vbtraz
2010-10-28 · TA获得超过5530个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4399万
展开全部
最好就是维持这个函数, 改之前先copy一份, 不改原内容

如果你觉得这样没效率, 其实就这么没效率, 毕竟你要改东西又不改原内容的那必然就是在改拷贝, 你自己做还是系统给你做并不会改变效率问题

其实不是不可以直接返回个对象,问题是返回指针你可以根据NULL知道找没找到, 而返回对象的话你没法确定这个变量是不是“有效的”,所以还得再加个判断对错之类的传递值,那更麻烦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式