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如果我这样做了,那么每次尝试使用[I]时都会出现一个错误。我的意思是,我想你也有。同时阅读这篇文章,直到你得到问题中的文本。编辑:谢谢你的编辑。问题中的文本是最好的:D是一个我认为写得很好的副本<代码>静态
类的成员不是定义-在您显式实例化它们之前,它们不会被实例化。通常位于关联的.cpp
文件中的全局空间。如果您的MakeKey
类位于.h
文件中,您应该将成员的定义放入关联的.cpp
文件中。如果没有与该.h
文件关联的.cpp
文件,则将其粘贴到与main()
相同的.cpp
文件的全局命名空间中。