为什么我不能使用 std::unique_ptr 来避免循环依赖?
Why I can't use std::unique_ptr for avoiding circular dependency?
下面是我的代码:
class Model;
class Resources
{
public:
Resources() :
initialized(false)
, pathToSkyBoxModel("E:\C++\OpenGLtutorial\resources\cube.obj")
{};
void Init(const ShaderProgram& shaderProgram);
/* Setters */
void SetSkyBoxModelPath(std::string&& newPath) { pathToSkyBoxModel = newPath; };
/* Getters */
bool IsInitialized() const noexcept { return initialized; };
const std::string& GetPathToSkyBoxModel() const noexcept { return pathToSkyBoxModel; };
DiffuseTexture default_texture;
TransparentTexture default_transparent_texture;
private:
std::unique_ptr<Model> pModel;
bool initialized;
};
我试图通过使用std::unique_ptr资源类成员pModel来避免循环依赖。不幸的是,我得到这样的编译错误:"您不能在这里使用部分定义的类"。但它适用于std::shared_ptr和公共指针。std::unique_ptr有什么问题
问题是编译器试图声明一个内联析构函数,为此它需要类的完整定义。
你可以通过在.h
中声明析构函数并在/.cpp
中定义它来绕过它
//in .h
~Resources();
//in cpp
Resources::~Resources() {}
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何在具有循环依赖的类中dynamic_cast?
- C++模板方法中的循环依赖关系
- 修复循环依赖项 c++17 标头
- 涉及全局对象的循环依赖C++
- 循环依赖,在继承类的情况下使用覆盖方法
- Wt::D bo 中的循环依赖关系
- 在包含窗口标头时难以解决循环依赖关系问题
- 解决循环依赖关系 c++ 的想法
- C++循环依赖关系,未声明的标识符
- C++ 中的循环依赖关系问题
- 错误 C2512 视觉C++(并且不是循环依赖项)
- CMake 外部和内部静态库的循环依赖关系
- 正在从继承中解析循环依赖项
- "std::shared_ptr"循环依赖关系是如何导致问题的
- 纯引用而不是weak_ptr来打破循环依赖关系
- "invalid use of incomplete type" .解决循环依赖关系
- 如何避免模板方法的循环依赖
- 循环依赖结构,使用前向声明时结构的错误重定义