Exemplo

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] convertido implicitamente para MyClass
}
}
}

Solução
Para construtores de argumentos simples (que não são construtores de cópia) ou construtores que o compilador pode utilizar para conversão, declare o construtor como explícito. Em vez de utilizar operadores de conversão de tipo implícito que o compilador pode utilizar inesperadamente, utilize métodos customizados explicitamente.

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] ){
//convertido explicitamente em double
}
}
}