打印并存储到类型类的矢量
printing and storing to vector of type class
我想将p1和p2的值存储到向量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;
}
当我编译时,我得到以下错误:
"operator[]"不匹配(操作数类型为"std::vector"answers"std:::vector::迭代器{aka__gnu_cxx::__normal_iterator>}")
在我使用cout的线路上。我在stackoverflow和其他几个网站上搜索了很多,但给出的解决方案并没有解决我的问题。我希望有人能帮助我。提前谢谢。马德斯。
在列表上迭代时不需要调用下标运算符,只需取消对迭代器本身的引用即可。
for(i = vip.begin(); i != vip.end(); i++)
cout << *i;
此外,您将需要添加<lt;到Person,或者只调用您想要显示的getter。
for(i = vip.begin(); i != vip.end(); i++)
cout << i->getNavn();
ostream
不知道Person
应该输出到什么。您需要重载ostream
或引用您想要的字段。
即:
cout << i->getNavn() << " " << i->getAlder() << endl;
或
ostream& operator<<(ostream& os, const Person& p)
{
os << p.getAlder() << '--' << p.getNavn() << endl;
return os;
}
相关文章:
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- C++ 将 CIN 值存储到任何类型的数组中
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- 在C++中,如何在变量中正确存储 BYTE 类型?
- 多维数组存储三种不同的数据类型?
- 生成一个类Name_class并将两种数据类型存储在一个向量中
- 在 JavaScript 中,值的数据类型存储在何处以及如何存储?
- 将Protobuf字节类型存储在二进制文件中
- 如何检查程序是否超过数据类型存储
- 将多调数据类型存储到unique_ptr向量中
- C++元编程:按类型存储整数
- 将多个类型存储到同一个容器中
- 如何打印 boost::any 的向量,当我将元素类型存储在另一个字符串向量中时
- 堆栈/堆变量的变量/引用名称或类型存储在内存中的位置
- C++ dynamic_cast vs 将对象类型存储在静态枚举中
- 有没有任何方法可以在运行时将不同的数据类型存储在一个变量中
- 是否可以将Boost uint128_t数据类型存储为原始int类型?
- 使用boost::variant库制作地图.如何以适当的类型存储和显示事物
- 是否可以将对象的类型存储在映射中以进行投射