头文件中的 C++ 静态变量出现 LNK 错误 2001

C++ static variable in header file getting LNK error 2001

我自己有一个非常基本的程序。我正在尝试在 class 中创建一个静态向量,然后可以在我的整个程序中访问它,它只是创建一个 class 的实例,它具有存储的静态向量。

这是我的测试程序

testClass.h

#pragma once

#include <vector>

class TestClass
{
public:
    TestClass();
    ~TestClass();

    static void AddNumber(int number);

    static std::vector<int> Numbers;
};

testClass.cpp

#include "TestClass.h"

TestClass::TestClass()
{
    Numbers.push_back(1);
    Numbers.push_back(2);
    Numbers.push_back(3);
}

TestClass::~TestClass()
{

}

void TestClass::AddNumber(int number)
{
    Numbers.push_back(number);
}

main.cpp

#include "TestClass.h"
#include <iostream>

int main()
{
    TestClass testClass;

    testClass.AddNumber(4);

    for (int i = 0; i < testClass.Numbers.size(); i++)
    {
        std::cout << "Number at " << i << ", is : " << testClass.Numbers.at(i) << std::endl;
    }

    std::cin.get();
}

编译时得到

Error   2   error LNK2001: unresolved external symbol "public: static class std::vector<int,class std::allocator<int> > TestClass::Numbers" (?Numbers@TestClass@@2V?$vector@HV?$allocator@H@std@@@std@@A)   c:\Users\mainUser\documents\visual studio 2013\Projects\C++StaticClass\C++StaticClass\main.obj  C++StaticClass
Error   3   error LNK2001: unresolved external symbol "public: static class std::vector<int,class std::allocator<int> > TestClass::Numbers" (?Numbers@TestClass@@2V?$vector@HV?$allocator@H@std@@@std@@A)   c:\Users\mainUser\documents\visual studio 2013\Projects\C++StaticClass\C++StaticClass\TestClass.obj C++StaticClass
Error   4   error LNK1120: 1 unresolved externals   c:\users\mainUser\documents\visual studio 2013\Projects\C++StaticClass\Debug\C++StaticClass.exe 1   1   C++StaticClass

任何人都可以指出正确的方向来解决我的问题。

您需要在cpp 文件中初始化静态变量。在 testClass.cpp 文件

中添加以下行
std::vector<int> TestClass::Numbers;