声明并使用静态列表来打印对象(在c++中)

Declaring and using a static list in order to print objects (in c++)

本文关键字:对象 c++ 打印 静态 列表 声明      更新时间:2023-10-16

我有一个名为Person的类,它包含一个标头和一个cpp文件。我试图在头文件中声明一个静态列表,如下所示:

static list<Person*> group;

(我已经在cpp和头文件中包含了列表)。我试着在cpp文件中写一个Print函数:

void Person::PrintAll() const {
int counter=0;
list<Person>::iterator i;
**for ( i= group.begin(); i != group.end(); ++i)**{
cout << *i << endl;
counter++;
}

但我在"for"行(标记的行)中遇到了很多错误。我还试图在cpp文件中声明静态列表,但我得到了相同的错误。我做错了什么?Thanksalot

list<Person>::iterator i不是一个迭代list<Person*>的迭代器。

您的类型应该是Person*

因为group是全局变量(正如作者在评论中提到的),所以有两种变体:

声明:

.h:

extern std::list<Person*> group;

cpp:

std::list<Person*> group;

那么就可以在多个cpp文件中使用它。

或者,如果您只想在一个cpp文件中使用它,那么根本不在头中声明,而是在cpp文件中将其声明为静态:

cpp:

static std::list<Person*> group;