在成本字符串和函数中返回NULL

Pep*_*nds -2 c++

我需要在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.我怎么检查呢?

Nei*_*irk 6

您不能为a返回空值const string&.您必须返回对实际字符串对象的引用,该对象将在函数返回后继续生效.

选项:

  • 返回一个const string *可以为null的

  • 在null情况下抛出异常.

  • 按值返回一个字符串,并在null情况下返回一个空(但有效)的字符串.这有两个缺点.它会复制结果,您无法再在空案例和真正的空字符串值之间进行辨别,而无需从函数中输出更多信息.