Я пытаюсь создать accessor для переменной члена класса с помощью интеллектуальных указателей. Здесь код:
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>'
Добавление .get
в this->resource
конечно, не работает, потому что тип возвращаемого значения изменяется.
Должен ли я использовать unique_ptr здесь? Это просто проблема синтаксиса? Неужели я полностью ошибаюсь?
мой фон с умными указателями: я использую простые указатели уже пару лет отчасти потому, что не могу найти подробное объяснение того, когда использовать какие типы интеллектуальных указателей и как их использовать. Я устал от оправданий, поэтому я просто погружаюсь. Думаю, я понимаю, что такое умные указатели и почему их использовать, но я очень мало разбираюсь в деталях. На данный момент я полностью потерял в к бесконечному Q & A о смарт - указатели.