如何修复“&需要l值”

因此,我创建了一个项目并将本教程复制到其中。当我尝试运行它时,它给了我这个错误:C2102 & requires l-value

m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));

我搜索了很多,但没有找到适合上下文的内容。我能做些什么来修复它?

回答

这与DirectX-Graphics-Samples 存储库中问题 #652 Error building D3D12MeshShaders(在 VS 16.8.0 Preview 3.0 上)下报告的构建错误基本相同。

我收到错误 C2102: '&' 需要在许多行上使用 l 值。通常是当 CD3DX12 构造函数直接与 & 一起使用时,例如[...]

该问题仍然存在,评论中给出了临时解决方法:

像这样使用 r 值的地址 [...] 是不合格的代码。

Visual C++ 在这里发出警告 C4238,/W4 警告级别为 4,但大多数 VC 项目默认为级别 3,包括这些示例。[...] 看起来 /permissive- 的最新 Visual C++ 更新已将此升级为错误。

您现在可以通过在 C/C++ -> 语言项目设置中将“一致性模式”更改为“否”来禁用 /permissive- 来解决此问题。


以上是如何修复“&需要l值”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>