为什么我会收到此错误:
Error 2 error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>' c:\program files (x86)\microsoft visual studio 11.0\vc\include\xmemory0 606 1 UNIQUE_PTR
尝试使用__declspec(dllexport)
导出此课程时?
class __declspec(dllexport) A
{
private:
std::stack<std::unique_ptr<int>> ints;
};
我正在使用vs2012
答案 0 :(得分:0)
我不知道Visual Studio所以我不能确定错误消息的含义,但我可以看到你的类是不可用的:唯一的成员变量是私有的,你没有写任何方法来访问它
答案 1 :(得分:0)
据我所知,std :: stack假设元素可以复制,但对于std :: unique_ptr则不是这样,必须移动
所以问题是std :: stack无法访问std :: unique_ptr的私有拷贝构造函数,而不是std :: stack本身是私有的。
答案 2 :(得分:0)
根据https://support.microsoft.com/en-us/kb/168958,您可能在导出stack
和unique_ptr
时遇到一些困难。 (由于stack
使用deque
)
某些STL类包含嵌套类。这些类不可能 出口。例如,deque包含一个嵌套的类deque :: iterator。 如果您导出deque,您将收到必须导出的警告 双端队列::迭代器。如果导出deque :: iterator,则会收到警告 你必须出口deque。这是由设计限制引起的 一旦模板类被实例化,就无法重新实例化 并出口。 当前可以导出的唯一STL容器 是矢量。其他容器(即map,set,queue,list, deque)都包含嵌套类,无法导出。