如何在构造函数的静态列表中添加对象

时间:2018-04-05 08:58:59

标签: c++ static visual-studio-2017

#include <forward_list>

using namespace std; 

class Test {
public:
    Test(){objects.push_front(this);}
private:
    static forward_list<Test*>objects; 
};

int main(){
    Test a; 
}//Visual Studio 17, error

Visual Studio没有说出问题所在。它只是重新使用这两个代码 - LNK1120和LNK2001。

1 个答案:

答案 0 :(得分:4)

您有static forward_list<Test*>objects;的未定义引用您必须像这样定义static对象:

#include <forward_list>

using namespace std; 

class Test {
public:
    Test(){objects.push_front(this);}
private:
    static forward_list<Test*>objects; 
};

forward_list<Test*> Test::objects;

int main(){
    Test a; 
}//Visual Studio 17, error