错误C2248:'std :: unique_ptr< _Ty> :: unique_ptr':无法访问类'std :: unique_ptr< _Ty>'中声明的私有成员

时间:2014-02-19 04:44:26

标签: c++ visual-studio-2012 c++11

目前我正在尝试使用std::unique_ptr,但我在Visual Studio 2012中遇到编译错误。

class A
{
private:
 unique_ptr<A> other;
public:
 unique_ptr<A> getOther()
 {
   return other;
 }
};

错误是:

error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
with
[
    _Ty=A
]
c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(1447) : see declaration of 'std::unique_ptr<_Ty>::unique_ptr'
with
[
    _Ty=A
]

1 个答案:

答案 0 :(得分:2)

我相信std::unique_ptr可以是返回类型,如果返回的值是本地范围(即,它一旦离开函数就会被销毁)。在你的情况下,它不是,因为你正在返回unique_ptr<A> other,它在课程有效期间有生命时间。