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] ){
}
}
}
|
|