-1

我正在尝试使用 g++ 进行编译,但出现以下错误

if(nmFunctions && nmFunctions->updateAddressResponseHandler)

错误:'operator&&' 不匹配</p>

4

2 回答 2

0

我猜这updateAddressResponseHandler是一个函数,你想调用它并检查它的返回值。在这种情况下,您需要调用它:

if(nmFunctions && nmFunctions->updateAddressResponseHandler())
//                                                         ^^

如果不是这种情况,请发布 的定义updateAddressResponseHandler,并描述您尝试使用它做什么。

于 2013-02-21T07:40:34.887 回答
0

问题是对象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(),否则将无法编译。

于 2013-02-21T07:20:20.983 回答