当尝试编译我的程序时,出现此错误:
Error 1 error LNK2001: unresolved external symbol "public: static class sf::Texture TextureManager::texture" (?texture@TextureManager@@2VTexture@sf@@A)
这是我的代码:
main.cpp:
int main()
{
TextureManager::Initialize();
}
TextureManager.h:
#include <SFML\Graphics.hpp>
using namespace sf;
class TextureManager
{
public:
static Texture texture;
public:
static void Initialize();
};
TextureManager.cpp:
#include <SFML\Graphics.hpp>
#include <iostream>
#include "TextureManager.h"
using namespace sf;
void TextureManager::Initialize()
{
if(!texture.loadFromFile("Textures\\Blocks\\Texture.png"))
{
std::cout << "Error!";
}
else
{
std::cout << "Sucess!";
}
}
我尝试搜索任何解决方案(包括此站点),但未找到任何解决方案。
当您在C ++中拥有静态成员时,应在.cpp中定义它:
static Texture Texture::texture;
这是因为静态成员必须恰好在一个翻译单元中定义,以便不违反单一定义规则。
您可以在TextureManager.cpp的顶部执行此操作:
#include <SFML\Graphics.hpp>
#include <iostream>
#include "TextureManager.h"
using namespace sf;
static Texture Texture::texture; // <-
void TextureManager::Initialize()
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句