我正在尝试使用智能指针为一个类成员变量创建访问器。以下是代码:
class MyResource
{
};
class MyClass
{
public:
std::unique_ptr<MyResource> getResource();
private:
std::unique_ptr<MyResource> resource;
};
std::unique_ptr<MyResource> MyClass::getResource()
{
return this->resource;
}
编译出现的错误:
无法访问声明在‘std::unique_ptr<_Ty>’类中的私有成员
为this->resource
添加.get
当然行不通,因为返回类型会改变。
我是否不应该在这里使用unique_ptr?这只是一个语法问题吗?我完全走错了吗?
我的智能指针背景:几年来我一直在使用普通指针,部分原因是我找不到一个确定何时使用哪种类型的智能指针以及如何使用它们的解释。我已经厌倦了找借口,所以我要深入学习。我认为我理解了智能指针是什么以及为什么要使用它们,但是我对其细节知之甚少。目前我在关于 智能 指针 无尽的 问答和讨论中完全迷失了。
std::unique_ptr<MyResource> MyClass::getResource()
会将所有权转移给调用者吗?这很可能不是你想要的,除非你正在设计一个工厂。 - πάντα ῥεῖ