я следующий класс, что некоторые из операторов перегружены:определение явно перегружен проблема конструктор
class CLASS1
{
CLASS1();
CLASS1(const CLASS1 &obj);
CLASS1 operator +(const CLASS1 &obj) {
CLASS1 srcObj;
// doing add stuff here
return srcObj;
}
void func()
{
CLASS1 boj = // some method which returns CLASS1 obj.
}
CLASS1& operator =(const CLASS1 &obj) {
// copy properties
}
}
Хорошо, это работает отлично. но через некоторое время я решил сделать свой класс явным, чтобы избежать неявных преобразований. Поэтому я сделал это так:
class CLASS1
{
explicit CLASS1();
explicit CLASS1(const CLASS1 &obj);
CLASS1 operator +(const CLASS1 &obj) {
CLASS1 srcObj;
// doing add stuff here
return srcObj; // compiler gives non-matching errors
}
void func() {
CLASS1 boj = somemethods(); // compiler gives non-matching errors
}
CLASS1& operator =(const CLASS1 &obj) {
// copy properties
}
}
Теперь компилятор не дает «никакой функции соответствия для вызова ...» ошибки (указывается в коде выше), несмотря на я явно перегружен назначение оператор. Где моя ошибка?