我想将 p1 和 p2 的值存储到 vector vip 中并使用以下代码打印 vip:
#include <iostream>
#include <vector>
#include "Person.h"
#include "Daglejer.h"
#include "Funktionaer.h"
using namespace std;
int main() {
Person p1("Mads", 21);
Person p2("Carl", 23);
Person p3("Thomas", 32);
Person p4("Magnus", 8);
Person p5("Joe", 81);
vector <Person>vip;
vip.push_back(p1);
vip.push_back(p2);
vector<Person>::iterator i;
for(i = vip.begin(); i != vip.end(); i++)
cout << vip[i];
return 0;
}
头文件 Person.h 包含以下内容:
#ifndef PERSON_H_
#define PERSON_H_
#include <string>
using namespace std;
class Person {
private:
string navn;
int alder;
public:
Person(string, int);
Person();
void setNavn(string);
string getNavn();
void setAlder(int);
int getAlder();
};
#endif /* PERSON_H_ */
和cpp文件:
#include "Person.h"
using namespace std;
Person::Person(){
}
Person::Person(string name, int age) {
setNavn(name);
setAlder(age);
}
void Person::setNavn(string name){
navn = name;
}
void Person::setAlder(int age){
alder = age;
}
string Person::getNavn(){
return navn;
}
int Person::getAlder() {
return alder;
}
编译时出现如下错误:
no match for 'operator[]' (operand types are 'std::vector' and 'std::vector::iterator {aka __gnu_cxx::__normal_iterator >}')
在我使用 cout 的那一行。我在 stackoverflow 和其他几个网站上搜索了很多,但给出的解决方案并没有解决我的问题。我希望有一个人可以帮助我。 提前致谢。 疯了。
最佳答案
迭代列表时不需要调用下标运算符,只需取消引用迭代器本身即可。
for(i = vip.begin(); i != vip.end(); i++)
cout << *i;
此外,您需要向 Person 添加 << 的非成员重载,或者只对要显示的内容调用 getter。
for(i = vip.begin(); i != vip.end(); i++)
cout << i->getNavn();
关于c++ - 打印并存储到类型类的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23222799/