表达式必须是左值

时间:2013-07-07 09:13:13

标签: c++

有很多这样的问题,但通过它们并没有解决我的问题。

PSSetShaderResources作为第三个参数需要ID3DShaderResourceView* const*

所以我不能这样做(因为我得到了左值错误):

// std::unique_ptr<Texture> mTexture;
// ID3D11ShaderResourceView* Texture::getTexture() const {
//     return mTexture;
// }

deviceContext->PSSetShaderResources( 0U, 1U, &mTexture->getTexture() );

这就是为什么我找到了解决这个问题的方法:

auto tex = mTexture->getTexture();
deviceContext->PSSetShaderResources( 0U, 1U, &tex );

但是,我想摆脱auto tex = ...行。 是否有可能更改getTexture()方法(或不更改它)以便像第一种情况一样进行编写?

1 个答案:

答案 0 :(得分:0)

好的,我已将getTexture()方法改为:

解决了这个问题
ID3D11ShaderResourceView* const* Texture::getTexture() const {
    return &mTexture.p; // this is a CComPtr<ID3DShaderResourceView> mTexture;
}