C++ - 如何反复重新初始化对象?
C++ - how to reinitialize object repeatedly?
我正在尝试用 C++ 实现此逻辑:
Object obj(args);
while (obj.isOK()) {
obj = obj.next();
}
但我不能使用这个确切的代码,因为 Object
继承了 boost::noncopyable
所以它没有赋值运算符。我可以向 Object
添加方法和构造函数(但不能使其可复制),但我不想这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为 Object
创建一个新的构造函数,我可以这样做,但同样,最好我不需要新的构造函数,这似乎是一个非常讨厌的解决方案反正。我有什么选择?
使 Object::next
改变 Object
到位。由于 Object
不可复制,这似乎是 Object::next
唯一明智的做法。
Object::next
return是什么意思?
如果它 return 是一个新的 Object
你可以添加一个移动赋值运算符到 Object
:
Object& operator=(Object&& obj)
{
//move its iternal state to this and then
return *this;
}
因此不会发生数据复制,也不会实际复制任何内容。
我正在尝试用 C++ 实现此逻辑:
Object obj(args);
while (obj.isOK()) {
obj = obj.next();
}
但我不能使用这个确切的代码,因为 Object
继承了 boost::noncopyable
所以它没有赋值运算符。我可以向 Object
添加方法和构造函数(但不能使其可复制),但我不想这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为 Object
创建一个新的构造函数,我可以这样做,但同样,最好我不需要新的构造函数,这似乎是一个非常讨厌的解决方案反正。我有什么选择?
使 Object::next
改变 Object
到位。由于 Object
不可复制,这似乎是 Object::next
唯一明智的做法。
Object::next
return是什么意思?
如果它 return 是一个新的 Object
你可以添加一个移动赋值运算符到 Object
:
Object& operator=(Object&& obj)
{
//move its iternal state to this and then
return *this;
}
因此不会发生数据复制,也不会实际复制任何内容。