在发布此内容之前,我知道它可能是一个常见问题,我已经阅读了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;
我不明白,因为我做了以下验证:
template<typename T>
来定义模板(我也尝试使用template<class T>
)有什么想法吗?
谢谢大家。
答案 0 :(得分:-1)
将std::string Tools::tostr
的定义移到头文件中。