Как обойти предупреждение "rvalue, используемое как 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
);
Я получаю:
предупреждение C4238: используется нестандартное расширение: класс rvalue, используемый как lvalue
Каков правильный (без предупреждения) способ сделать это без дополнительных строк кода?
Кроме того, мне интересно, что так плохо в этой строке кода? Почему он даже дает предупреждение, если он работает нормально? Или это...?
Ответы
Ответ 1
Вы берете адрес временного. Вы не можете этого сделать. Предварительно объявите свои векторы:
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);
Обратите внимание, что я проигнорировал ваш "без дополнительных строк кода"? требование, потому что это глупое требование.