我需要在C++上编写自己的哈希映射.它有一个方法.get("some_string")如果这个字符串不在我的hash_map中我返回NULL.但是,如果此函数返回NULL或字符串,我无法检查我的程序.这是我的代码:
if (m.get("some_string"))
cout << m.get("some_string");
Run Code Online (Sandbox Code Playgroud)
和方法:
const string& Map::get(const string& s) {
string_node* pos = find_pos(s);
if (pos)
return pos->val;
else
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
pos-> val只是一个字符串.所以我有一个错误,我无法从const字符串转换为bool.问题是我需要做什么,以防止cout我的函数返回错误NULL.我怎么检查呢?
您不能为a返回空值const string&.您必须返回对实际字符串对象的引用,该对象将在函数返回后继续生效.
选项:
返回一个const string *可以为null的
在null情况下抛出异常.
按值返回一个字符串,并在null情况下返回一个空(但有效)的字符串.这有两个缺点.它会复制结果,您无法再在空案例和真正的空字符串值之间进行辨别,而无需从函数中输出更多信息.