[英]std::vector<std::unique_ptr<UnimplementType>> compile error
我的代码有问题。 我在我的 class <RenderPass> 中使用前向声明,std::unique_ptr<RenderPass> 运行良好。 但是 std::vector<std::unique_ptr<RenderPass>> 导致编译错误。 有没有人遇到过这种情况? 谢谢!
class RenderPass;
class RenderSystem final
{
public:
RenderSystem() = default;
~RenderSystem();
private:
std::unique_ptr<RenderPass> c {} // work;
std::vector<std::unique_ptr<RenderPass>> m_render_passes {} // compile error: error C2338: static_assert failed: 'can't delete an incomplete type';
这是因为您对向量进行了内联初始化。 这需要元素类型的完整定义。
如果您在具有RenderPass
完整定义的源文件中定义RenderSystem
构造函数,则可以使用其初始化列表来初始化向量。
因此 class 的定义将改为:
class RenderPass;
class RenderSystem final
{
public:
RenderSystem();
~RenderSystem();
private:
// Note: No inline initialization of the vector
std::vector<std::unique_ptr<RenderPass>> m_render_passes
};
在源文件中:
#include "header_file_for_renderpass.h"
RenderSystem::RenderSystem()
: m_render_passes {}
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.