Как обойти предупреждение "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);

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