inl文件导致重新定义

时间:2014-05-18 06:53:09

标签: c++ inline

我正在学习SFML,我有:

#include "TextureHolder.inl"

在我的Textureholder.hpp文件中。我的TextureHolder.inl文件如下:

sf::Texture& TextureHolder::get(Textures::ID id){
auto result = mTextureMap.find(id);
return *result ->second;
}

void TextureHolder::load(Textures::ID id, const std::string& filename){
std::unique_ptr<sf::Texture> texture(new sf::Texture);

texture ->loadFromFile(filename);
mTextureMap.insert(std::make_pair(id, std::move(texture)));
}

当我构建项目时,重新定义了函数加载的错误并且发生了。

当我将#include "TextureHolder.inl"放入我的Game.cpp时,它可以工作。那么这是否意味着每个实现应该放在源代码而不是头文件中?

我该如何处理这个问题?

0 个答案:

没有答案