【问题标题】:How can i store New Object in Vector? [closed]如何将新对象存储在 Vector 中? [关闭]
【发布时间】:2013-09-23 19:12:06
【问题描述】:

我无法弄清楚如何将新对象存储到向量中,并能够提取该信息。

我想做的是,将文件中的不同数据存储在一系列对象中,然后遍历这些对象并提取信息。

我正在寻找这样的东西:

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

   temp->setSomething();

   i++;
}

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

我尝试将温度推送到向量,但它只给我错误。

我正在尝试以编程方式执行的操作是否正确?我无法理解这一点。任何形式的帮助将不胜感激。谢谢。

【问题讨论】:

  • 如果您确实阅读过这些错误以及一本您肯定拥有的强制性 C++ 书籍,您就会知道哪里出了问题。

标签: c++ class vector dynamic-allocation


【解决方案1】:

首先有点词汇:您不想将类存储在数组(实际上是向量)中,而是要存储对象。对象是类的实例。

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

第三,始终以相同的方式编写 MyClass。不要更改小写/大写。

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

【讨论】:

  • 对不起,应该花时间校对我的问题。我并没有像我刚才说的那样毫无头绪,只是没睡多少觉。感谢您抽出宝贵时间提供帮助!
  • @Ey0o:Balmer-Peak 之后是精神错乱(睡眠不足与饮酒有相似的影响)。该睡觉了!
【解决方案2】:

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

要么:

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

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

【讨论】:

    【解决方案3】:

    您的向量应该是指向myClass 的指针向量,即,

    vector<myClass *> list;
    

    或者你的 temp 不应该是一个指针,即,

    myClass temp;
    

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

    【讨论】:

    • 只有在使用指针时,这部分才会修改向量中的对象:temp->setSomething();。但是你必须手动进行内存管理。考虑使用智能指针。
    • 你 1) 指针语法失败,2) 不想在任何容器中存储原始指针。
    • 而且你在“逐字节”部分也失败了。
    • @Griwes:我不明白你的第一条评论。 Miichi 的指针语法看起来不错。
    • @Sebastian,是的,现在可以了,因为它得到了纠正。也许是时候探索post history 功能的精彩世界了? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多