Я перегрузил оператор + Integer operator+(Integer & a, Integer & b)
. Но когда я делаю a = b + c + d, он выдает ошибку недействительных операндов в двоичное выражение. Но добавив const
к параметрам, больше никаких ошибок. Почему это происходит?Почему добавление «const» разрешает «недопустимые операнды для двоичного выражения»
1
A
ответ
7
b + c + d
создает временный результат b + c
. Ссылка на это временное сообщение затем передается во второй вызов operator+
().
Только const
ссылки могут быть привязаны к временным.
Дальнейшие обсуждения см. How come a non-const reference cannot bind to a temporary object?
Смежные вопросы
- 1. Недопустимые операнды для двоичного выражения ('const Vector' и 'const Vector')
- 2. Недопустимые операнды для двоичного выражения ('int_node' и const 'int_node')
- 3. Ошибка XCode «недопустимые операнды для двоичного выражения»
- 4. C++: недопустимые операнды для двоичного выражения
- 5. Недопустимые операнды для двоичного кода
- 6. C++) Недопустимые операнды для двоичного выражения Ошибка с приоритетной очередью
- 7. Недопустимые операнды для двоичного выражения при перегрузке оператора
- 8. Недопустимые операнды для сообщения об ошибке двоичного выражения
- 9. Ошибка компиляции Objective-C: Недопустимые операнды для двоичного выражения
- 10. C++ For Loop: недопустимые операнды для двоичного выражения
- 11. C++ «Недопустимые операнды для двоичного выражения» в cout
- 12. Недопустимые операнды для двоичного выражения ('double' и 'double')
- 13. Недопустимые операнды для двоичного выражения ('double' и 'double *')
- 14. ошибка: недопустимые операнды бинарного выражения
- 15. ошибка: недопустимые операнды бинарного выражения
- 16. инвалидные операнды бинарного выражения («Const» и «Const»)
- 17. Попытка понять: недействительные операнды для двоичного выражения, C
- 18. Недопустимые операнды для двоичных%?
- 19. Obj-c Ошибка выражения - Недопустимые операнды для двоичного выражения ('CGFloat' (aka 'double'))
- 20. Ошибка: недопустимые операнды типов «float» и «int» для двоичного «operator ^»
- 21. Недопустимые операнды в двоичное выражение ('RadioDevice' и 'const RadioDevice')
- 22. ошибка: недопустимые операнды двоичном -
- 23. Недопустимые операнды для двоичного выражения ('ostream' (aka 'basic_ostream <char>') и 'Date')
- 24. Ошибка: «Недопустимые операнды для двоичных/
- 25. Недопустимые операнды для двоичных ошибок ==
- 26. unordered_set: недействительные операнды бинарного выражения («Const Play» и «Const Play»)
- 27. подталкивания add_console_log дает неверные операнды ошибке двоичного выражения
- 28. dwsscript Недопустимые операнды
- 29. ошибка: недопустимые операнды бинарной *
- 30. Ошибка Arc4random: «Неверные операнды для двоичного выражения (« float »и« float »)»