如何绕过警告"rvalue used as lvalue"?

How to get around the warning "rvalue used as lvalue"?

本文关键字:as lvalue used rvalue 何绕过 警告      更新时间:2023-10-16

我使用本教程,但当我从中编译代码时:

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:使用了非标准扩展:类右值用作左值

在没有额外代码行的情况下,什么是正确的(无需警告的)方法?

另外,我想知道这行代码有什么不好的地方?如果它工作得很好,为什么它甚至会发出警告?还是。。。?

您正在获取一个临时的地址。你不能那样做。事先声明您的矢量:

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

请注意,我忽略了您的"没有额外的代码行?"要求,因为这是一个愚蠢的要求。

相关文章: