类对象的向量已损坏

时间:2015-12-14 12:14:48

标签: c++ vector mathematical-optimization

我想创建一个T类型对象的向量。我有以下几点:

vector<T> objects; //global

void CreateObject(some_params){
   T t = T();
   /* code follows that computes members of t.
      T is a complex class and all members require some computation
      to be given a value */

   objects.push_back(T(t) );  //copy constructor using t and push in vector
}

void funtion1(some_params){
    //iterate over all objects previously pushed, and do some computation.
}

void function2(some_params){
   //iterate over all objects previously pushed, and do some computation.
}

int main(){
  createObject(some_params);
  liboptpp_object.optimize(function1, function2);
}

我的副本构造函数:

class T{
    T(const T& t){
      this->member1 = t.member1;
      this->member2 = t.member2;
      /* and so on for all data members */
    }
}

从上面的汇总代码中可以看出,我创建了一个对象向量。函数function1function2将使用此向量中的对象来进一步执行某些计算。我试图使用Opt++库最小化数学函数。 Opt++实例的optimize函数作为参数指向两个函数 - function1function2。因此,当Opt ++尝试最小化函数时,将调用这两个函数。然后,这些函数应对先前创建的对象的向量进行操作并返回一些值。这就是整个画面。

但是,当两个函数被Opt ++调用时,当它们遍历对象向量时,可以看到大多数对象都被破坏了 - 它们有垃圾值,{{{{{{ 1}}方法。所以这些对象的内存现在包含随机值。 createObject()方法是创建和推送这些对象的唯一位置。以后不会修改对象。

createObject()填充此对象向量的方式是否有问题;是否有一些违反范围或某事?我不确定发生了什么,但我认为我创建矢量的方式可能是错误的。

0 个答案:

没有答案