C ++ - 如何重复重新初始化对象?

时间:2015-11-08 07:58:56

标签: c++ initialization noncopyable

我正在尝试用C ++实现这个逻辑:

Object obj(args);
while (obj.isOK()) {
    obj = obj.next();
}

但我不能使用这个确切的代码,因为Object继承boost::noncopyable所以它没有赋值运算符。我可以向Object添加方法和构造函数(但不能使其可复制),但我不愿意。其他问题有手动销毁和放置新的解决方案,如果我为Object创建一个新的构造函数,我可以做,但再次,最好我不需要新的构造函数,这似乎是一个非常讨厌的解决方案无论如何。我有什么替代品?

2 个答案:

答案 0 :(得分:3)

Object::next变异Object。由于Object不可复制,这似乎是Object::next无论如何都要做的唯一明智的事情。

答案 1 :(得分:-1)

Object::next返回什么? 如果它返回一个新的Object,您可以将移动赋值运算符添加到Object

Object& operator=(Object&& obj)
{
    //move its iternal state to this and then
    return *this;
}

因此,不会发生数据重复,也不会实际复制任何内容。