サンプル

class MyClass {
public:
MyClass(int param, int param2=0);
operator double() const;
bool operator==(const MyClass& left, const MyClass& right);
private:
double num;
};

int main(int argc, char* argv[]){
MyClass a;
int b[] = {0,1,2};
for(int i=0; i<3; i++)
if( a == b[i] ){
//b[i] MyClass へ暗黙的に変換されます。
}
}
}

ソリューション
単一引数のコンストラクター (コピー・コンストラクターではないもの) またはコンパイラーが変換に使用する可能性があるコンストラクターの場合は、コンストラクターを明示的に宣言します。 コンパイラーによって予期せずに使用される暗黙的な型変換の演算子を使用する代わりに、カスタム・メソッドを明示的に使用します。

class MyClass {
public:
explicit MyClass(int param, int param2=0);
double toDouble() const;
bool operator==(const MyClass& left, const MyClass& right);
private:
double num;

};

int main(int argc, char* argv[]){
MyClass a;
int b[] = {0,1,2};
for(int i=0; i<3; i++)
if( a.toDouble() == b[i] ){
// 倍精度へ明示的に変換されます。
}
}
}