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