用C ++显示类列表

时间:2015-05-22 21:40:14

标签: c++ list class displayobject

你好,我是编程新手,我试图在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;
}

但它没有显示任何内容,我不知道为什么!有谁可以帮助我吗 ?谢谢

2 个答案:

答案 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";