创建重复对象的向量

Create vector of duplicate objects?

本文关键字:向量 对象 创建      更新时间:2023-10-16

我的向量为50,在矢量内部为5个对象。我想复制这5个对象中的所有内容,并用它们填充其余的矢量。

我下面的内容完全复制了对象(i = 5是因为我忽略了前4个向量元素(。

for (int i = 5; i <= CParams::iNumBirds; i++){
    m_vpDisplayableObjects[i + 5] = m_vpDisplayableObjects[i];
}

,但问题是我想给每个对象一个不同的ID,0-50。请参阅下面的

for (int i = 0; i < CParams::iNumBirds; i++) {
        m_pMainEngine->GetDisplayableObject(i + 5)->ObjectID = i;
    }

显然,由于它们是副本,因此每5个元素重置objectid,因此最终所有对象具有45-50而不是0-50。

我的问题是,如何创建这些对象的副本,但要给每个对象一个不同的objectid?

您可以创建一个将复制对象的属性复制到新对象的属性的函数,并将新对象的ID传递为参数。

 Obj copy(Obj& obj, int id) {
     Obj newObj();
     // copy atributes
     newObj.attribute1 = obj.attribute1;
     //...
     newObj.ObjectID = id;
     return newObj;
}

然后在for loop

中调用此功能
for (int i = 5; i <= CParams::iNumBirds; i++){
    m_vpDisplayableObjects[i + 5] = copy(m_vpDisplayableObjects[i], i + 5);
}