首页 > 解决方案 > 如何在 C++ 中创建对象列表并使用其方法?

问题描述

我创建了这个类,我需要使用 for(迭代器)来输入值,它们不一定是 i,任何其他值,因为我需要使用一个列表:

#include <iostream>
#include <list>

using namespace std;
// 1ra clase base
class Person {
  int e;

 public:
  Person(int);
  void printDates();
};

Person::Person(int x) { e = x; }
void Person::printDates() { cout << e; }
int main() {
  list<Person> persons;
  for (int i = 0; i < 5; i++) {
    Person person(i);
    persons.push_front(person);
  }
  // for(int i = 0; i < 5; i++)
  // {
  //     hombres[i].printDates();
  // }
}

我需要使用 personDates 方法,以及您可以添加的任何其他方法,无论是在列表中还是在另一个列表中。

标签: c++

解决方案


问题是 list 没有提供index到容器中。

persons[i] // does not work for list (though it does work for vector).

所以你需要使用一个迭代器。
旧版本的 C++ 是这样完成的:

for(auto loop = persons.begin(); loop != persons.end(); ++loop) {
    loop->printDates();
}

在现代版本的 C++ 中,这被简化为:

for(auto& item: persons) {
    item.printDates();
}

推荐阅读