c++ - 打印并存储到类型类的 vector

标签 c++ class object vector

我想将 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/

相关文章:

javascript - 合并循环中的对象

arrays - Postgresql将json数组选择成行和单个文本

c++ - 函数返回的增量指针

javascript - 有没有办法在 ES6 类上使用内部方法?

c++ - 为什么 double 和 long double 在下面的程序中给出不同的答案

class - 在 JDK 5 环境中找不到 java 类.. 在 JDK 6 中找不到

python - Python 类可以应用双向重载吗?

C++ 从 regex_iterator 获取匹配项

C++:读写类

c++ - 无法在 Mac 上使用 Quantlib 运行示例代码