【发布时间】:2013-07-09 11:36:24
【问题描述】:
这可能是以前有人问过的问题,但我找不到...
我在.hpp 文件中有一个类:
class A{
public:
A(){//constructor}
~A(){//destructor}
//some public methods and arguments
template<typename Type>
void func(Type t){//do something for numbers}
private:
//some private methods and arguments
}
模板方法应该适用于 int、double... 但不适用于字符串。因此,在我的.hpp 文件中,我定义了func 对数字的作用,并在我的.cpp 文件中写道:
template<>
void A::func(std::string t){ // do something in that case}
但是当我将函数func 与std::string 一起使用时,程序会调用数字的方法...所以我将.hpp 文件替换为:
class A{
public:
A(){//constructor}
~A(){//destructor}
//some public methods and arguments
template<typename Type>
void func(Type t){//do something for numbers}
void func(std::string s);
private:
//some private methods and arguments
}
我的.cpp 文件变成了:
void A::func(std::string t){ // do something in that case}
然后一切正常!
我的问题是,这是正确的做法吗?
【问题讨论】:
-
我想第二个大块是 hpp,而不是 cpp?真的吗?
-
是的,我编辑了那个错误......对不起
-
没有 pb,我只是不确定,所以我没有自己编辑。
标签: c++ templates specialization