0

尝试编译我的程序时出现此错误:

Error   1   error LNK2001: unresolved external symbol "public: static class sf::Texture TextureManager::texture" (?texture@TextureManager@@2VTexture@sf@@A) 

这是我的代码:

主.cpp:

int main()
{
     TextureManager::Initialize();
}

纹理管理器.h:

#include <SFML\Graphics.hpp>
using namespace sf;

class TextureManager
{
    public:
        static Texture texture;
    public:
        static void Initialize();
};

纹理管理器.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!";
    }
}

我尝试搜索任何解决方案(包括本网站),但没有找到任何解决方案。

4

1 回答 1

6

当你在 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()
{
}
于 2013-08-16T16:07:53.303 回答