我的类中有一个名为“find()”的方法,它返回一个指向存储在类中的数据的指针(该类是哈希表,准确)。我觉得返回一个指向我班级数据的指针是一个坏主意,我还没有找到更好的东西。有关如何查找数据而不担心用户可能删除(修改)我的对象的任何建议? 这是find方法: (该类是哈希表,它完全可以找到)
Data* find(const Key& key) {
if (isMember(key) == false) {
return NULL;
}
int hash_idx = hash_function(key, table_size);
return &(*((table[hash_idx])->find(key)));
}
答案 0 :(得分:1)
你应该返回指向const的指针:
CRUD
答案 1 :(得分:0)
这是容器的常见问题。基本上归结为以下几点:
您需要两个版本的find
:
Data const * find(Key const &) const;
Data * find(Key const &); // non-const
显然,您可以使用迭代器而不是指针,但这本身不会解决任何问题。然后你需要一个const
- 迭代器const
- 版本和一个(非 - const
) - 迭代器(非const
)版本。
为了获得有关这些设计决策的想法,我建议咨询STL即。 3}}和unordered_map
在这种情况下。