【发布时间】:2016-12-22 08:28:48
【问题描述】:
这是我的一段代码:
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;
};
我试图通过对资源类成员 pModel 使用 std::unique_ptr 来避免循环依赖。不幸的是,我收到编译错误,例如:“您不能在此处使用部分定义的类”。但它适用于 std::shared_ptr 和公共指针。 std::unique_ptr 有什么问题?
【问题讨论】: