c++ - 实例 C++ 的静态集合?

标签 c++ collections constructor static instances

<分区>

我有一个 Phone 类,我想要它在创建时将其自身添加到电话的静态集合中。所以我有收藏:

static vector < class Phone* > instances;

在构造函数中我这样做:

Phone::instances.push_back(this);

但是链接器抛出一个未解析的外部符号,这是为什么呢?我究竟做错了什么?我没有找到类似的问题。是否需要在构造函数外添加实例?还是我必须在另一个类(class)上收藏?非常感谢。

最佳答案

您必须在类外声明静态成员。

在你的标题中:

class Phone{
...
static vector < class Phone* > instances;
...
};

在您的 cpp 中,您需要创建它的实例:

//on global or namespace scope
vector <Phone*> Phone::instances;

关于c++ - 实例 C++ 的静态集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24663256/

相关文章:

c++ - 在 C++ 中打印我的变量后无法获得 $ 打印符号

java - 查找从某个键到某个键的消息,同时能够删除陈旧的键

java - 自定义可观察集合android

java - java中所有集合背后使用的数据结构

java - 在子类构造函数中调用 getClass() 总是安全的吗?

dart - 命名构造函数是 Dart 中生成构造函数的子集吗?

c++ - 为什么不多次调用构造函数?

c++ - 如何使用 C 或 C++ 将 .caf 文件转换为 .wav?

c++ - g++ 对构造函数的 undefined reference

C++:在继承链中放置构造函数的位置?