在我的课堂上,我有成员函数:

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

08-03 22:03