C++ 复制C++;迭代器中的对象

C++ 复制C++;迭代器中的对象,c++,arrays,oop,iterator,C++,Arrays,Oop,Iterator,我试图构建一个对象数组,在集合上使用迭代器来获取值 目前的代码是: 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 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*[]类型的东西,但它与代码后面的库调用不兼容


容器没有“to array”方法或任何类似方法。

对于通过搜索标题找到此主题的其他人:如果不应用不可复制约束,您将完全按照尝试的方式从迭代器中复制

回答你的问题: 如果在第三方C++库中找到一个名为“object”的类,则应该立即将第三方库扔进垃圾桶,并找到一个由C++的人编写的替代品,而不是一个非常喜欢java(或者有一个公共基础对象的另一种语言)的人。他们决定用一种毫无意义的语言来模仿它的行为。我不是想说废话,但这是一个严重的危险信号

然而,正如前面所说的,如果对象是不可复制构造的,那么在对象的实现中很可能存在一些禁止复制的东西,这些东西是类的作者知道的,而您不知道。试图绕过它就是在寻找bug

我的第一个想法是联系图书馆的作者,询问他们为什么认为该对象不可复制,以及可以为您的特定用途做些什么


如果您只想将对象实例从一个数组移动到另一个数组,则考虑包含指向对象的指针,或者将SydDypTR指向对象,而不是对象类本身,但是要谨慎,并且理解您正在传递指向特定对象的唯一实例的指针。

如果<代码>对象< /代码>是不可复制的,那么无论是谁编写了
对象
,他都不希望您这样做。很可能一个副本无论如何都不能正常工作。因此,您必须停止尝试这样做(可能保留一个
对象*
数组,并找到一种方法来避免无法使用的库调用),否则,您必须声明它们是错误的,然后重新编写
对象
。对象的赋值运算符已被删除,其副本构造函数是私有的,似乎有人不希望您复制此
对象
…是否有
对象
获得了移动构造函数和/或移动赋值运算符?显然
对象
不是库中的实际名称,仅用于此问题