Для конструкторов с одним аргументом (но не конструкторов копирования)
или конструкторов, которые могут быть использованы компилятором для преобразования, необходимо объявлять конструктор
явным образом. Вместо использования операторов неявного преобразования типов, которые могут быть неоднозначно восприняты компилятором, применяйте пользовательские методы явным образом.
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] ){
}
}
}
|
|