framebufferd3d11.h的片段
namespace dx11 {
...
class FramebufferManager : public FramebufferManagerBase
{
public:
...
private:
...
static struct Efb
{
...
std::unique_ptr<D3DTexture2D> resolved_color_tex;
std::unique_ptr<D3DTexture2D> resolved_depth_tex;
} m_efb;
};
} //namespace
framebufferd3d11.cpp 片段
namespace DX11
{
...
FramebufferManager::Efb FramebufferManager::m_efb;
...
FramebufferManager::FramebufferManager()
{
...
m_efb.resolved_color_tex = NULL;
m_efb.resolved_depth_tex = NULL;
}
} //namespace
如果我用 icc 编译,我会遇到 NULL 赋值问题,因为 NULL 被定义为 0。我该如何解决这样的问题?
最佳答案
您的代码是正确的。以下所有内容都应该有效:
m_efb.resolved_color_tex = 0;
m_efb.resolved_color_tex = NULL;
m_efb.resolved_color_tex = nullptr;
空指针常量(如 0
或 NULL
)可以隐式转换为 nullptr_t
并且 unique_ptr
有一个采用 nullptr_t
的赋值运算符。如果您使用的 ICC 版本尚不支持 nullptr
,这可以解释为什么 NULL
的分配对您不起作用。
使用 reset()
可能会有更好的运气:
m_efb.resolved_color_tex.reset(NULL);
或者,因为 NULL
是默认参数:
m_efb.resolved_color_tex.reset();
关于c++ - 返回 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630875/