C++ 公共静态向量上未解决的外部符号错误

C++ 公共静态向量上未解决的外部符号错误,c++,static,C++,Static,有问题的错误消息: LNK2001未解析外部符号“public:static class std::vector MakeKey::KeyArray”(?KeyArray@MakeKey@@2V$vector@UKeyStruct@MakeKey@@V$allocator@UKeyStruct@MakeKey@@@std@@@std@@A) 您好,我对整个编码过程有点陌生,如果这个错误很愚蠢,我会道歉,但我在两个公共静态向量上都遇到了一个未解决的外部符号错误。我已经阅读了多篇关于堆栈溢出的文章,

有问题的错误消息:

LNK2001未解析外部符号“public:static class std::vector MakeKey::KeyArray”(?KeyArray@MakeKey@@2V$vector@UKeyStruct@MakeKey@@V$allocator@UKeyStruct@MakeKey@@@std@@@std@@A)


您好,我对整个编码过程有点陌生,如果这个错误很愚蠢,我会道歉,但我在两个公共静态向量上都遇到了一个未解决的外部符号错误。我已经阅读了多篇关于堆栈溢出的文章,似乎无法找出我做错了什么。无论如何,这里是产生相同错误的最小代码。是的,向量保持静态很重要,因为如果它是非静态的,则会出现多个其他错误

类MakeKey
{
公众:
typedef结构键结构{
sf::图像Img;
sf::纹理Tex;
雪碧雪碧;
}纽基;
静态矢量键控阵列;
静态矢量窗阵列;
静态void StepWindows()
{
对于(inti{0};i>MakeKey::KeyArray.size();i++)
{
WindowArray[i]->透明(sf::颜色::透明);
WindowArray[i]->draw(KeyArray[i].Sprite);
WindowArray[i]->display();
}
}
};
我的主菜呢

intmain()
{
MakeKey::StepWindows();
}

“你好,我对这整个编码的东西有点新”+“是的,向量很重要,因为它是非静态的,因为其他多个错误出现”让我觉得这可能是你使用魔术C++ Voodoo关键字让编译器闭嘴的一个例子。首先,我认为你不能用更有趣的方式来表达。但是在一个严肃的回答中,如果它是非静态的,你必须在空白处声明它为
MakeKey-WindowArray-WindowArray静态
类的成员不是定义-在您显式实例化它们之前,它们不会被实例化。通常位于关联的
.cpp
文件中的全局空间。如果您的
MakeKey
类位于
.h
文件中,您应该将成员的定义放入关联的
.cpp
文件中。如果没有与该
.h
文件关联的
.cpp
文件,则将其粘贴到与
main()
相同的
.cpp
文件的全局命名空间中。