Saltar al contenido

El valor inicial de C++ de referencia a non-const debe ser un lvalue

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 &nKByteel 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *