为什么我不能从const String&中返回NULL。方法?

时间:2013-09-09 14:01:53

标签: c++ const

我有以下方法声明: 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-correctness概念?

2 个答案:

答案 0 :(得分:5)

NULL不是const String类型的对象,因此当预期引用const String时,您无法返回它。事实上,引用的一个主要优点是它们不能(永远)成为NULL

重新定义函数以返回const String *,或返回空String

答案 1 :(得分:1)

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

std::string&不是指针(或整数),因此您无法使用NULL。您可以返回"""Unknown"或类似的内容。