头文件中的 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;
我自己有一个非常基本的程序。我正在尝试在 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;