c++中的类显示列表

Display List of Class in C++

本文关键字:显示 列表 c++      更新时间:2023-10-16

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

但是没有显示,我不知道为什么!有人能帮帮我吗?谢谢你

实际上,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";

如果要打印出Person::Name字段,则必须更改打印语句

cout << *it;

cout << it->Name;

将打印出Person实例中的name字段。

或者,您可以为您的类重载operator <<,如@JerryCoffin的回答所述。