错误 C2102:“&”需要左值,VS2019。怎么修?
Error C2102: '&' requires l-value, VS2019. How to fix?
我正在使用 DirectX 11 并尝试使用 XMLoadFloat4 在范围内本地加载变量。我做了很多,名字很长,所以我不想创建一堆局部变量,但是使用这样的代码:
XMStoreFloat4(&vertices[0].normal, XMVector3Cross(
XMLoadFloat4(&(vertices[2].position - vertices[0].position)),
XMLoadFloat4(&(vertices[0].position - vertices[1].position))
));
我正在获取 C2102。你知道像这样就地创建引用的优雅方法吗?
Do you know elegant way to create reference in place like this?
该函数需要指针,而您正试图传递不允许的临时地址。只需将临时结果存储在变量中并将地址传递给这些变量:
auto a = vertices[2].position - vertices[0].position;
auto b = vertices[0].position - vertices[1].position;
XMStoreFloat4(
&vertices[0].normal,
XMVector3Cross(
XMLoadFloat4(&a),
XMLoadFloat4(&b)
)
);
您现在可以通过在 C/C++ -> 语言项目设置中将“一致性模式”更改为“否”来禁用 /permissive- 来解决此问题。
我正在使用 DirectX 11 并尝试使用 XMLoadFloat4 在范围内本地加载变量。我做了很多,名字很长,所以我不想创建一堆局部变量,但是使用这样的代码:
XMStoreFloat4(&vertices[0].normal, XMVector3Cross(
XMLoadFloat4(&(vertices[2].position - vertices[0].position)),
XMLoadFloat4(&(vertices[0].position - vertices[1].position))
));
我正在获取 C2102。你知道像这样就地创建引用的优雅方法吗?
Do you know elegant way to create reference in place like this?
该函数需要指针,而您正试图传递不允许的临时地址。只需将临时结果存储在变量中并将地址传递给这些变量:
auto a = vertices[2].position - vertices[0].position;
auto b = vertices[0].position - vertices[1].position;
XMStoreFloat4(
&vertices[0].normal,
XMVector3Cross(
XMLoadFloat4(&a),
XMLoadFloat4(&b)
)
);
您现在可以通过在 C/C++ -> 语言项目设置中将“一致性模式”更改为“否”来禁用 /permissive- 来解决此问题。