相关疑难解决方法(0)

向量中的不可复制元素

我有一个不可复制的类(即复制构造函数和赋值运算符被标记为'delete').我想将它们保存在std :: vector中.

它是一个RAII类,所以简单地存储指针或引用它不是我想要的.

我对新的初始化列表和移动构造函数的了解有限,这可能吗?

c++ stl move-semantics c++11

15
推荐指数
1
解决办法
7200
查看次数

奇怪的错误 - 为什么编译器试图调用复制构造函数?

我收到了一些非常奇怪的错误.编译器似乎想要因为某些我不理解的原因而调用复制构造函数.

(118) std::map<int, layer> xs;
(119) xs.begin()->first; // error?!
Run Code Online (Sandbox Code Playgroud)

layer 是一种不可复制的可移动类型.

class layer : public observable
{
    layer(const layer&);
    layer& operator=(const layer&);
public:
    layer(int index = -1);
    layer(layer&& other);
    layer& operator=(layer&& other);
   //...
};
Run Code Online (Sandbox Code Playgroud)

由于某种原因,第119行导致编译器尝试调用复制构造函数std::pair,为什么?

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(131): error C2248: 'layer::layer' : cannot access private member declared in class 'layer'
1> ..\layer.h(55) : see declaration of 'layer::layer'
1> ..\layer.h(53) : see declaration of 'layer'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(129) : while compiling class …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors visual-studio-2010 c++11

7
推荐指数
1
解决办法
1281
查看次数