我正在尝试在 C++ 中实现这个逻辑:
Object obj(args);
while (obj.isOK()) {
obj = obj.next();
}
但我不能使用这个确切的代码,因为Object
继承boost::noncopyable
所以它没有赋值运算符。我可以向 , 添加方法和构造函数Object
(但不能使其可复制),但我不希望这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为Object
. 我有什么选择?
我正在尝试在 C++ 中实现这个逻辑:
Object obj(args);
while (obj.isOK()) {
obj = obj.next();
}
但我不能使用这个确切的代码,因为Object
继承boost::noncopyable
所以它没有赋值运算符。我可以向 , 添加方法和构造函数Object
(但不能使其可复制),但我不希望这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为Object
. 我有什么选择?
使Object::next
突变Object
就地。由于Object
不可复制,这似乎是唯一明智的Object::next
做法。
返回什么Object::next
?如果它返回一个新鲜的Object
,你可以添加一个移动赋值运算符Object
:
Object& operator=(Object&& obj)
{
//move its iternal state to this and then
return *this;
}
因此不会发生数据复制,实际上也没有复制任何内容。