如何使用静态 stl 列表的迭代器

How to use iterator of static stl list?

本文关键字:迭代器 列表 stl 何使用 静态      更新时间:2023-10-16

我是c++的新手。

在我的程序中,我应该有一些"全局"列表(应该只初始化一次)和一个函数(两者都应该可以从其他类和文件访问)。我是这样定义的:

//header.h file    
#include <list>    
using namespace std;
class ClassA {
public:
    int Var;
};
class StaticListAndFunc {
    static list<ClassA> StaticListOfClassA;
    static return_t StaticFunc(int x, int y);
};

我的静态函数应该使用 StaticListOfClassA 和其他一些简单的输入。现在我尝试使用 StaticListOfClassA 在源文件中实现 StaticFunc:

//source.cpp
  #include "header.h"  
   return_t StaticListAndFunc::StaticFunc(int x, int y) {
        list<ClassA>::iterator TheIterator = StaticListOfClassA.begin();
        ...
};

我得到的错误:"source.cpp:对'ClassA::StaticListOfClassA'的未定义引用"(在行列表中::迭代器 TheIterator = StaticListOfClassA.begin();)

我应该如何正确定义迭代器?或者,也许还有另一种更好的方法来定义一个类,以后可以从其他文件和类轻松访问?我真的很感激任何帮助..

问题是你没有定义静态列表。在源代码.cpp模块中,您应该编写

list<ClassA> StaticListAndFunc::StaticListOfClassA;

也就是说,您需要定义此静态数据成员。

还要考虑到您已将函数 StaticFunc 声明为具有专用访问控制。您不能在类成员函数或友元函数之外调用它。