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

I'm trying to compile with g++ and i'm getting the below error

本文关键字:编译 错误 g++      更新时间:2023-10-16

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

if(nmFunctions && nmFunctions->updateAddressResponseHandler)

错误:"operator&'

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

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

如果不是这样的话,请发布updateAddressResponseHandler的定义,并描述你试图用它做什么。

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