C ++ - 静态模板没有匹配函数

时间:2015-07-15 03:33:47

标签: c++ templates

在发布此内容之前,我知道它可能是一个常见问题,我已经阅读了StackOverflow上的帖子并阅读了有关模板的信息,但我仍然无法解决我的问题。< / p>

我有一个类工具,里面有一个函数。

.h文件

class Tools{

public:
    template<typename T>
    static std::string tostr(const T& t);  

};

.cpp文件

template<typename T>
std::string Tools::tostr(const T& t) {
    ostringstream os;
    os<<t;
    string res= os.str();
    return res;
}

这个函数的目的是将一个数字转换为一个字符串(我知道c ++ 11已经有了一个函数,但是我想学习并且更熟悉这个概念)

在另一个类中,我使用以下函数:

 string resStr= Tools::tostr<string>("7.12341");

但我收到了这个错误:

  

错误:没有匹配函数来调用&#39; Tools :: tostr(float)&#39;

然后我也尝试了这一行:

 string resStr= Tools::tostr("7.12341");

我也遇到了错误:

  

错误:未定义引用`std :: string Tools :: tostr(float   常量&安培;)&#39;

我不明白,因为我做了以下验证:

  • 我在.h文件中定义了函数
  • 我使用template<typename T>来定义模板(我也尝试使用template<class T>
  • 返回类型字符串定义明确
  • 当我调用函数
  • 时,类Tool64很好地包含在类中

有什么想法吗?

谢谢大家。

1 个答案:

答案 0 :(得分:-1)

std::string Tools::tostr的定义移到头文件中。