Pour les constructeurs à argument unique
(qui ne sont pas des constructeurs de copie) ou pour les constructeurs
que le compilateur peut utiliser pour la conversion, déclarez ces
constructeurs comme étant explicites. Au lieu d'introduire des opérateurs
de conversion de type implicite que le compilateur risque d'utiliser à
mauvais escient, recourez explicitement à des méthodes personnalisées.
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] ){
}
}
}
|
|