这是一个重载||在我的类中定义的操作:
bool operator|| (const MyClass& v) const {
return ......; //some calculation
}
编译器会报告警告:
警告:用户定义“布尔MyClass的::运算||(常量MyClass的&)常量”总是计算两个参数[-Weffc ++]
我理解,因为内置了警告||是这可能是从什么用户自定义的操作者想要表现不同的短路。但事实是,我需要有-Weffc++
打开任何警告是不允许的。那么什么码||重载可以解决此警告(即禁止这种警告)?谢谢。
我使用的是G ++ 5.4.0在Ubuntu 16.04。
您可以通过不超载的逻辑运算符(其内置的版本短路),避免了警告。如果你应该遵循-Weffc++
选项的指导方针,那么你应该不会宣布这样的过载。
您可以使用:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
// the declaration
#pragma GCC diagnostic pop
为了不管编译选项暂时抑制了警告。