Si encuentras algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
Cuando pasa un puntero por un no-const
referencia, le está diciendo al compilador que va a modificar el valor de ese puntero. Su código no hace eso, pero el compilador piensa que sí, o planea hacerlo en el futuro.
Para corregir este error, declare x
constante
// This tells the compiler that you are not planning to modify the pointer
// passed by reference
void test(float * const &x)
*x = 1000;
o crea una variable a la que le asignas un puntero nKByte
antes de llamar test
:
float nKByte = 100.0;
// If "test()" decides to modify `x`, the modification will be reflected in nKBytePtr
float *nKBytePtr = &nKByte;
test(nKBytePtr);
los &nKByte
crea un valor temporal, que no se puede vincular a una referencia a non-const.
podrías cambiar void test(float *&x)
a void test(float * const &x)
o simplemente puede soltar el puntero por completo y usar void test(float &x); /*...*/ test(nKByte);
.
Cuando usted llama test
con &nKByte
el operador dirección de crea un valor temporaly normalmente no puede tener referencias a valores temporales porque son, bueno, temporales.
No use una referencia para el argumento, o mejor aún, no use un puntero.
Aquí puedes ver las comentarios y valoraciones de los usuarios
Si crees que te ha resultado de provecho nuestro post, sería de mucha ayuda si lo compartes con más juniors de este modo contrubuyes a extender esta información.