我有一个带有构造函数的模板类,它接受一个参数;指向接受第二个模板类型参数的函数的函数指针。并返回第一个模板类型的元素。
这是代码:
缓存控制器.hpp:
template<class TYPE, class KEY>
class cache
{
private:
TYPE (*create_func)(KEY);
public:
cache(TYPE (*func)(KEY));
};
extern sf::Texture * create_texture(std::string path);
缓存控制器.cpp:
template<class TYPE, class KEY>
cache<TYPE, KEY>::cache(TYPE (*func)(KEY))
{
this->create_func = func;
}
sf::Texture * create_texture(std::string path)
{
sf::Texture * tex_p = new sf::Texture;
tex_p->loadFromFile(path);
return tex_p;
}
测试代码:
cache<sf::Texture *, std::string> tcache(&create_texture);
但是,当我链接我得到这个错误:
[Linker error] main.cpp:11: undefined reference to `cache<sf::Texture*, std::string>::cache(sf::Texture* (*)(std::string))'
当然,如果有任何更简单的方法来实现具有任意键、值和创建函数的对象缓存,我全都听好了。