我正在尝试使用 g++ 进行编译,但出现以下错误
if(nmFunctions && nmFunctions->updateAddressResponseHandler)
错误:'operator&&' 不匹配</p>
我正在尝试使用 g++ 进行编译,但出现以下错误
if(nmFunctions && nmFunctions->updateAddressResponseHandler)
错误:'operator&&' 不匹配</p>
我猜这updateAddressResponseHandler
是一个函数,你想调用它并检查它的返回值。在这种情况下,您需要调用它:
if(nmFunctions && nmFunctions->updateAddressResponseHandler())
// ^^
如果不是这种情况,请发布 的定义updateAddressResponseHandler
,并描述您尝试使用它做什么。
问题是对象nmFunctions
不能被隐式转换为布尔值或者不知道如何处理&&
操作符。
从->
我猜它可能是 a shared_ptr
,在这种情况下,您需要将其显式转换为bool
- (bool)nmFunctions && ...
。
请注意,如果该类nmFunctions
具有以下任一功能,那应该可以解决您的问题。shared_ptr
使用另一个强制显式转换的版本。
为什么首选第一种方式应该很明显。
// allow for "(bool)nmFunctions" or implicit casting
operator bool() { return someBoolean; }
// allow for "nmFunctions && (boolean)"
bool operator&&(bool b) { return b && someBoolean; }
此外,updateAddressResponseHandler
听起来像一个函数名。如果是,则需要将其更改为updateAddressResponseHandler()
,否则将无法编译。