0

私のクラスにはメンバー関数があります:

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)
4

1 に答える 1

5

最初に、k1 && k2はブール値に評価され、次にthat_bool && k3、 for のオーバーロードを提供しない が得られますoperator&&(そしてすべきではありません! )。あなたが本当にやりたいことは、何も過負荷にしないようです:

if (k1.isUsed() && k2.isUsed() && k3.isUsed())

または、のメンバーとしてへの明示的な変換を提供することもできます。boolKinematicVariable

explicit operator bool() const { return isUsed(); }

C++03 でこれを行うには、safe-bool イディオムを使用します。

于 2013-03-03T17:36:53.460 に答える