在我的课堂上,我有成员函数:
const bool operator&&(const KinematicVariable &right) const {
return this->isUsed() && right.isUsed();
}
inline const bool isUsed() const { return this->_used; }
然后我尝试
if (k1 && k2 && k3)
但是我明白了
error: C2677: binary '&&' : no global operator found which takes type
'KinematicVariable' (or there is no acceptable conversion)
最佳答案
首先,k1 && k2
将被评估为布尔值,然后您将具有that_bool && k3
,您不会为(and shouldn't!)提供operator&&
的重载。看来您真正想要做的是根本不重载任何内容:
if (k1.isUsed() && k2.isUsed() && k3.isUsed())
或者,您可以作为
bool
的成员向KinematicVariable
进行显式转换:explicit operator bool() const { return isUsed(); }
要在C ++ 03中执行此操作,请使用safe-bool idiom。