【发布时间】:2017-05-16 11:52:34
【问题描述】:
我有一个名为 Person 的类,它包含一个头文件和一个 cpp 文件。 我试图在头文件中声明一个静态列表,如下所示:
static list<Person*> group;
(我已经在 cpp 和头文件中包含了列表)。 我尝试在 cpp 文件中编写打印函数:
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 文件中声明静态列表,但我得到了同样的错误。 我做错了什么?非常感谢
【问题讨论】:
-
list<Person*>与list<Person>。注意*。 -
感谢您的快速回复。不幸的是它仍然不起作用。我认为该列表不知何故无法识别。我尝试执行此操作: group.push_front(x);我得到这个错误:undefined reference to Person::group 也许我没有以一种好的方式去标化/初始化列表?谢谢
-
如何初始化cpp文件中的列表?
-
我读你的文字好像 group 是一个全局变量?既然你在谈论是否可以在CPP中声明它?如果是这样的话,请问您为什么不简单地将其设为类属性?也就是说,您是否尝试过以另一种方式访问它?像 cout
-
是的,person 有一个有效的 ofstream 运算符。我不再收到那个错误,但是当我厌倦了主要这样做时:Person :: PrintAll()我得到了这些错误:-无效的参数'候选人是:void printAll()'-无法调用成员函数'void Person: :printAll() const' without object 你知道为什么会这样吗?
标签: c++