<分区>
我有一个 Phone 类,我想要它在创建时将其自身添加到电话的静态集合中。所以我有收藏:
static vector < class Phone* > instances;
在构造函数中我这样做:
Phone::instances.push_back(this);
但是链接器抛出一个未解析的外部符号,这是为什么呢?我究竟做错了什么?我没有找到类似的问题。是否需要在构造函数外添加实例?还是我必须在另一个类(class)上收藏?非常感谢。
<分区>
我有一个 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/