如何在Vector中存储新对象?

时间:2013-09-18 20:54:42

标签: c++ class vector dynamic-allocation

我无法弄清楚如何将新对象存储到矢量中,并且能够将该信息拉出来。

我要做的是,在一系列对象中存储来自文件的不同数据,然后浏览这些对象并提取信息。

我正在寻找类似的东西:

vector<myClass> list;
while( i < nFiles)
{
   myClass *temp = new myClass;
   list.push_back(temp);       

   temp->setSomething();

   i++;
}

我希望每个nFile循环都有一个不同的对象,所以我以后可以遍历每个对象并从每个对象中提取信息。

我已经尝试将温度推向矢量,但它只给我一些错误。

我试图以编程方式正确地做什么?我无法理解这一点。任何形式的帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:5)

首先是一些词汇:你不想在数组中存储类(实际上是vector),你想存储对象。对象是类的实例。

其次,你有while循环的语法错误。在C ++书中查找。最好使用for循环。

第三,总是以同样的方式编写MyClass。不要改变大小写。

最后,了解指向对象和对象的指针之间的区别。声明向量时指定的元素类型与放入其中的内容不匹配。

答案 1 :(得分:1)

语法是while(...)not(while ...)并且你不能在while循环参数中说i = 1。你想做的是:

 int i = 1;
 while (i < nFiles){
   //Do something
 }

OR

for (int i = 1; i < nFiles; i++){
  //Do something
}

答案 2 :(得分:0)

你的矢量应该是指向myClass的指针的矢量,即

vector<myClass *> list;

或者你的临时不应该是指针,即

myClass temp;

后者意味着在执行list.push_back(逐字节)时复制整个临时对象。