y2k*_*y2k 0 c++ overloading operator-keyword
在我班上我有成员职能:
const bool operator&&(const KinematicVariable &right) const {
return this->isUsed() && right.isUsed();
}
inline const bool isUsed() const { return this->_used; }
Run Code Online (Sandbox Code Playgroud)
然后我试试
if (k1 && k2 && k3)
Run Code Online (Sandbox Code Playgroud)
但我明白了
error: C2677: binary '&&' : no global operator found which takes type
'KinematicVariable' (or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)
首先,k1 && k2将被评估为一个布尔值,然后你将有that_bool && k3,你没有提供过载operator&&(并且不应该!).看来你真正想做的事情并不是过载任何东西:
if (k1.isUsed() && k2.isUsed() && k3.isUsed())
Run Code Online (Sandbox Code Playgroud)
或者,您可以提供显式转换bool为以下成员KinematicVariable:
explicit operator bool() const { return isUsed(); }
Run Code Online (Sandbox Code Playgroud)
要在C++ 03中执行此操作,请使用safe-bool习语.