У меня вопрос, что значит вернуть выражение присваивания, как в моем примере кода? У меня есть перечисление, и я переопределяю оператор ++:. Поэтому в моем коротком примере можно переключаться между лигами, но в коде я не понимаю. Код компилируется и работает нормально.Что означает оператор присваивания в операторах return, например return t = ...?
Код:
enum Traficlight
{green, yellow, red };
Traficlight& operator++(Traficlight& t)
{
switch (t)
{
case green: return t = Traficlight::yellow; //Here <--
case yellow: return t = Traficlight::red; //Here <--
case red: return t = Traficlight::green; //Here <--
default:
break;
}
}
int main()
{
Traficlight Trafic = Traficlight::green;
Trafic++;
if (Trafic == Traficlight::yellow)
{
cout << "Light is Yellow" << endl;
}
string in;
cin >> in;
}
Что означает "возвращение т = Traficlight :: желтый" означают, почему не могу я просто вернуть "Traficlight :: желтый".
Дополнительную информацию о возвращаемом значении оператора присваивания см. Здесь: http://stackoverflow.com/questions/14697643/low-level-details-of-cc-assignment-operator-implementation-what-does- it-retu –
Это то же самое, что и 't = x; return x; '. – 0x499602D2
Этот код не компилируется: вы определяете preincrement 'operator ++', но используете postincrement 'operator ++'. – aschepler