我有一个非常基本的程序。我试图在一个类中创建一个静态向量,然后可以在我的整个程序中访问它,只是创建一个具有存储静态向量的类的实例。
这是我的测试程序
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
任何人都可以指出我如何解决问题的正确方向。
答案 0 :(得分:1)
您需要在cpp文件中初始化静态变量。在testClass.cpp文件中添加以下行
std::vector<int> TestClass::Numbers;