estoy usando this tutorial, pero cuando compilo el código de él:¿Cómo evitar la advertencia "rvalue used as lvalue"?
D3DXMatrixLookAtLH(
&matView,
&D3DXVECTOR3(0.0f, 10.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 1.0f) // warning C4238
);
me sale:
C4238 advertencia: la extensión no estándar utilizado: rvalue clase utilizada como valor-
¿Cuál es la forma correcta (sin advertencias) de hacer esto sin líneas adicionales de código?
Además, me pregunto qué tiene de malo esa línea de código. ¿Por qué incluso da una advertencia si funciona bien? O lo hace ...?
El hecho es que no puede tomar la dirección de un temporal (rvalue). 'operator &' * needs * an lvalue. La advertencia describe correctamente eso. Sin embargo, prácticamente hablando, el código está bien, ya que los temporales vivirán hasta el final de la expresión completa (la llamada a la función). – Xeo
Da la advertencia porque el código no es portátil. Su compilador tiene una extensión no estándar que lo permite; otros compiladores pueden rechazarlo. –
Lo malo de esto es que la próxima vez, accidentalmente, harás de 'matView' un temporal también. – lapk