我正在尝试将一个可移动的、不可复制的对象插入到
std::vector
#include <vector>
class MovingClass
{
public:
MovingClass(const int value) : _value(new int(value)) {}
MovingClass(const MovingClass& src) = delete;
MovingClass& operator=(const MovingClass& src) = delete;
MovingClass(MovingClass&& source) : _value(source._value) { source._value = nullptr; }
MovingClass& operator=(MovingClass&& source) { _value = source._value; source._value = nullptr; }
~MovingClass() { delete _value; }
int* _value;
};
int test_vector_main()
{
std::vector<MovingClass> containers;
containers.push_back({ 42 });
return 0;
}
该类的最初目的是关闭winapi句柄,而不是删除指针。
Configuration Properties->C/C++->All Options
我处理的项目将警告视为错误,并禁用了异常。
我不知道该怎么做,除了放弃不复制规则或启用例外。我会启用例外,但如果我不能,我还能做什么?
为什么会这样
push_back