Показать список классов в переполнении стека

Здравствуйте, я новичок в программировании, и я пытаюсь отобразить список классов в 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;
}

но ничего не отображается, я не знаю почему! Может кто-то помочь мне, пожалуйста ? благодарю вас

-3

Решение

На самом деле, 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";
0

Другие решения

Если вы хотите распечатать Person::Name поле, которое вы должны изменить свой оператор печати

cout << *it;

в

cout << it->Name;

который напечатает поле имени в Person пример.

В качестве альтернативы, вы можете перегрузить operator << для вашего класса, как описано в ответе @ JerryCoffin.

0

По вопросам рекламы [email protected]