(C++) 如何将 stl 列表声明为 extern?

Posted

技术标签:

【中文标题】(C++) 如何将 stl 列表声明为 extern?【英文标题】:(C++) How to declare a stl list as extern? 【发布时间】:2010-10-11 02:21:43 【问题描述】:

我有:

std::list<Particle> particles;
std::list<Particle>::iterator particleit;

在我的 main.cpp 中。我需要在我的一个类文件中将这两个声明为 extern,但是当我尝试直接的方法时,我的编译器给了我一些关于缺少“>”的错误。我将如何解决这个问题?

【问题讨论】:

您确定包含&lt;list&gt;Particle 标头吗? 确切的代码和确切的错误信息肯定比英文描述更好。 “我需要将这两个都声明为 extern”——我对此表示怀疑! 【参考方案1】:
extern std::list<Particle> particles;

如果这不起作用,那么您还有其他错误。你是否包含了&lt;list&gt; 并且Particle 的定义在particles 被声明的地方可见?

【讨论】:

谢谢。它现在编译。但是我现在遇到了应用程序冻结的另一个问题。不过,我可能会解决这个问题。再次感谢。 这可能会导致初始化顺序失败......最佳实践是 static 函数本地。 对,“冻结”可能来自于在初始化之前尝试访问全局对象。最佳做法是完全避免非本地对象,但如果你觉得你必须这样做,而不是使用设计良好的单人持有人......

以上是关于(C++) 如何将 stl 列表声明为 extern?的主要内容,如果未能解决你的问题,请参考以下文章

c++ stl 声明对象的同时如何初始化?

如何在 C++ 中声明一个字符串数组?

如何在C++ STL的queue当中查找一个元素?

C++ STL之tuple详解

C++ STL之tuple详解

c++ stl set 中find方法是如何实现的