gpt4 book ai didi

c++ - 如何解决 "user-defined ' operator||( )' always evaluates both arguments"warning when -Weffc++ is opened?

转载 作者:行者123 更新时间:2023-11-28 01:24:28 25 4
gpt4 key购买 nike

这是一个重载的||在我的类中定义的运算符:

bool operator|| (const MyClass& v) const {
return ......; //some calculation
}

编译器报告警告:

warning: user-defined 'bool MyClass::operator||(const MyClass&) const' always evaluates both arguments [-Weffc++]

我理解警告,因为内置 ||是短路的,这可能与用户定义的运算符打算表现的不同。但问题是,我需要打开 -Weffc++ 并且不允许任何警告。那么||的代码是什么重载可以解决此警告(即抑制此警告)?谢谢。

我在 Ubuntu 16.04 上使用 g++ 5.4.0。

最佳答案

您可以通过不重载逻辑运算符(其内置版本短路)来避免警告。如果您应该遵循 -Weffc++ 选项的准则,那么您应该不声明此类重载。

您可以使用:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
// the declaration
#pragma GCC diagnostic pop

无论编译选项如何,暂时抑制警告。

关于c++ - 如何解决 "user-defined ' operator||( )' always evaluates both arguments"warning when -Weffc++ is opened?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com