目前我正在尝试使用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
]
答案 0 :(得分:2)
我相信std::unique_ptr
可以是返回类型,如果返回的值是本地范围(即,它一旦离开函数就会被销毁)。在你的情况下,它不是,因为你正在返回unique_ptr<A> other
,它在课程有效期间有生命时间。