如何绕过警告"rvalue used as lvalue"?
How to get around the warning "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
);
我得到:
警告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);
请注意,我忽略了您的"没有额外的代码行?"要求,因为这是一个愚蠢的要求。
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么我会" void value not ignored as it ought to be"?
- 为什么这些代码仍然使用 lvalue 函数?
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 了解 Linux 虚拟内存:valgrind 的 massif 输出显示了有和没有 --pages-as-heap 的主要差异
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- "expression must be a modifiable lvalue"是什么意思?
- 如何理解"Temporary objs are destroyed as the last step in evaluating the full-expression"?谁能用一些简单的例子来说明这
- C++指针算术"lvalue required as left operand of assignment"错误
- 重载运算符 [] 并且没有收到"lvalue required as left operand of assignment"错误
- "lvalue required as increment operand" 关于 C++ 和 stl vector's begin()
- 将链接哈希表初始化为 NULL。获取"lvalue required as left operand of assignment"错误。为什么?这是我的代码:
- 列表迭代器,"lvalue required as left operand of assignment"
- "lvalue required as left operand of assignment"在奇怪的地方--C++
- 如何绕过警告"rvalue used as lvalue"?
- 编写链表时"lvalue required as left operand of assignment"错误
- 位域"In-class initialization"结果为"error: lvalue required as left operand of assignment"
- 错误:"lvalue required as left operand of assignment"
- C++错误"lvalue required as left operand of assignment"