Привет всем!
Есть текст VC6
#include <iostream>
using namespace std;
enum Decade
{ zero, one, two, three, four, five, six, seven, eight, nine };
Decade operator+=(Decade &a, Decade b)
{ return Decade(a = Decade((a+b)%10)); }
ostream& operator<<(ostream &out, const Decade &a)
{ switch(a)
{ case zero : out<<"zero"; break;
case one : out<<"one"; break;
case two : out<<"two"; break;
case three : out<<"three"; break;
case four : out<<"four"; break;
case five : out<<"five"; break;
case six : out<<"six"; break;
case seven : out<<"seven"; break;
case eight : out<<"eight"; break;
case nine : out<<"nine"; break;
}
return out;
}
Decade operator+(Decade a, Decade b)
{ Decade t = a; return Decade(t+=b); }
Decade operator+(Decade a, int b)
{ Decade t = a; return Decade(t+=Decade(b%10));}
Decade operator+(int a, Decade b)
{ Decade t = Decade(a%10); return Decade(t+=b);}
int main()
{ Decade A = seven, B = six;
cout <<(A+=B) << endl;
cout <<1+B << endl;
cout <<B+1 << endl; //--выдает ошибку С2593
return 0;
}
error C2593: 'operator +' is ambiguous
типа повторное определение операции
Это баг VC6 или моих мозгов?
Ответ можно намылить Laptev@astu.astranet.ru