你好,我是编程新手,我试图在C ++中显示一个类列表 我试过这个:
#include <string>
#include <list>
class Person
{
public:
std::string Name;
Person();
virtual ~Person();
}
#include "Person.h"
#include <iostream>
#include <conio.h>
#include <list>
#include <string>
using namespace std;
int main()
{
Person p;
list<Person> lp;
p.Name= "Smith";
lp.push_back(p);
while (it != lp.end())
{
cout << *it;
it++;
}
_getch();
return 0;
}
但它没有显示任何内容,我不知道为什么!有谁可以帮助我吗 ?谢谢
答案 0 :(得分:0)
如果要打印Person::Name
字段,则必须更改打印声明
cout << *it;
到
cout << it->Name;
将打印出Person
实例中的名称字段。
或者,您可以为您的班级重载operator <<
,如@JerryCoffin的回答中所述。
答案 1 :(得分:0)
实际上,cout << *it;
部分就好了。
您忽略的是为您的班级重载operator<<
。为了确保一致性,我可能会在创建Person时将其更改为需要名称,然后将Name
设为私有成员,这样外部代码就不会搞砸了:
class Person
{
std::string Name;
public:
Person(std::string Name) : Name(Name) {}
virtual ~Person();
friend std::ostream &operator<<(std::ostream &os, Person const &p) {
return os << p.Name;
}
}
然后,您创建和打印列表的代码可能如下所示:
std::list<Person> people { "Smith", "Jones" };
for ( auto const &p : people)
std::cout << p << "\n";