java - una - setter y getter c++
Por qué no es posible incrementar y luego pasar el valor en el método set por++ (3)
El operador de incremento requiere un campo o variable. La evaluación de getId() no da como resultado un campo de identificación; devuelve una copia del valor getId() devuelve (por "copia" quiero decir una copia literal para tipos primitivos y una nueva referencia para tipos de referencia). getId() podría implementarse como return id; internamente, pero no obtiene el id campo, solo una copia de su valor.
El equivalente más cercano sería int i = getId(); setId( getId() + 1 ); return i; int i = getId(); setId( getId() + 1 ); return i; , pero estás pidiendo mucho para que getId()++ como azúcar sintáctico para tal expresión.
Tengo una línea de código que funciona así,
mrq.setId((mrq.getId()+1));
Pero, cuando intenté escribirlo así,
mrq.setId((mrq.getId()++));
No funciona, el error es, Invalid argument ot the operation ++/--
¿Cuál es la razón técnica detrás de esto?
++ operador se usa para incrementar el valor de la variable en 1. por lo que a++ se trata como a=a+1 . Eso significa que el operando en el que se usa será donde se realizará la asignación.
Cuando escribe mrq.getId()++ no le proporciona una variable de operando que puede incrementar y, por lo tanto, esto no funciona.
x++ es esencialmente equivalente a x = x + 1 , lo que no tiene sentido en su caso:
mrq.getId() = mrq.getId() + 1