0

我有以下方法声明: const String& MyClass::GetAspect(const String& strKey) const

在这个方法中,我们决定在做一些事情之前做一个空指针检查;如果这个方法里面的指针是null,我们只想返回null

但是,我收到以下错误:

myclass.cpp(222) : error C2440: 'return' : cannot convert from 'int' to 'const String &'
        Reason: cannot convert from 'int' to 'const String'
        No constructor could take the source type, or constructor overload resolution was ambiguous

有人可以帮我理解这一点吗?这里有一些我不完全理解的 const 正确性概念吗?

4

2 回答 2

5

NULL不是 type 的对象const String,所以当然不能在需要引用时返回它const String。事实上,引用的主要优点之一是它们不能(永远)是NULL.

将函数重新定义为 return const String *,或者返回一个空的String

于 2013-09-09T14:05:29.360 回答
1

NULL 是一个指针(或者从技术上讲,可以转换为/从指针转换的整数值零nullptr是一个值为零的指针)。

Astd::string&不是指针(或整数),因此您不能使用NULL它。你可以返回"""Unknown"类似的东西。

于 2013-09-09T14:16:34.580 回答