我有以下方法声明:
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概念?
答案 0 :(得分:5)
NULL
不是const String
类型的对象,因此当预期引用const String
时,您无法返回它。事实上,引用的一个主要优点是它们不能(永远)成为NULL
。
重新定义函数以返回const String *
,或返回空String
。
答案 1 :(得分:1)
NULL是一个指针(或者技术上,整数值为零,可以转换为/从指针转换,nullptr
是一个值为零的指针)。
std::string&
不是指针(或整数),因此您无法使用NULL
。您可以返回""
或"Unknown"
或类似的内容。