我正在尝试用g ++编译,我得到以下错误

时间:2013-02-21 06:53:33

标签: c++ operator-keyword

我正在尝试用g ++编译,我收到以下错误

if(nmFunctions && nmFunctions->updateAddressResponseHandler)
  

错误:与'operator&&'

不匹配

2 个答案:

答案 0 :(得分:0)

问题是对象nmFunctions不能隐式转换为布尔值,或者不知道如何处理&&运算符。

->我想它可能是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(),否则将无法编译。

答案 1 :(得分:0)

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

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

如果情况并非如此,请发布updateAddressResponseHandler的定义,并描述您尝试使用它的内容。