Как обойти предупреждение "rvalue используется как lvalue"? - PullRequest
7 голосов
/ 06 января 2012

Я использую этот учебник , но когда я скомпилирую код из него:

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
);

, я получаю:

предупреждение C4238: нестандартныйиспользуемое расширение: класс rvalue используется как lvalue

Как правильно (без предупреждения) сделать это без дополнительных строк кода?

Кроме того, мне интересно, что же такого плохогооб этой строке кода?Почему он даже дает предупреждение, если он работает просто отлично?Или это ...?

1 Ответ

16 голосов
/ 06 января 2012

Вы берете временный адрес. Вы не можете сделать это. Объявите свои векторы заранее:

D3DXVECTOR3 a(0.0f, 10.0f, 0.0f)
            ,b(0.0f, 0.0f, 0.0f)
            ,c(0.0f, 0.0f, 1.0f);
D3DXMatrixLookAtLH(&matView, &a, &b, &c);

Обратите внимание, что я проигнорировал ваше "без дополнительных строк кода?" требование, потому что это глупое требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...