Mam taki kod:
class Foo
{
public:
int operator+(int other)
{
return other;
}
};
class Bar
{
Foo foo;
public:
operator Foo&()
{
return foo;
}
};
int main()
{
Bar bar;
printf("%i\n", bar + 1); // blad
}
Przy kompilacji wyskakuje błąd error C2676: binary '+' : 'Bar' does not define this operator or a conversion to a type acceptable to the predefined operator. Dlaczego tak jest? przecież bar powinien się przekonwertować do Foo, który ma operator+, tak?