【发布时间】:2016-03-08 18:55:50
【问题描述】:
我正在尝试构建一个对象数组,在集合上使用迭代器来获取值。
目前的代码是:
Object array[n]; //n is defined higher up the program
int index = 0;
for (iterator i = container.begin(), ie = container.end(); i != ie;++i) {
Object f = *i;
array[index] = f;
index++;
}
我已经抽象了一些东西,对象和容器是来自第三方库的类。
这段代码可以工作,但 Object 的赋值运算符已被删除,并且它的复制构造函数是私有的。
进一步点:
虽然我当然可以轻松构建 Object*[] 类型的东西,但它与代码中稍后的库调用不兼容。
容器没有 'to array' 方法或类似的方法。
【问题讨论】:
-
如果
Object不可复制,那么写Object的人特别不希望你这样做。很可能副本无论如何都无法正常工作。因此,您要么必须停止尝试这样做(也许保留一个Object*数组,并找到一种方法来避免无法使用它的库调用),否则您必须将它们声明为错误并重新编写Object. -
对象的赋值运算符已被删除,它的复制构造函数是私有的 似乎有人不想让你复制这个
Object... -
Object有移动构造函数和/或移动赋值运算符吗?