如果我有一个类型为T的泛型类,并且我有一个返回T的函数怎么办?如果typeid(T)== typedef(string),我希望我的函数返回一个特定的字符串?
template<class T>
class Class1
{
public:
Class1();
~Class1();
T func();
};
template <class T>
T Class1<T>::func()
{
string d = "T = string";
if (typeid(string) == typeid(T))
return (T)d; <-- here I got the problem
}
答案 0 :(得分:6)
以下是类模板的成员函数的显式特化的示例:
#include <iostream>
#include <string>
template<class T>
class Class1
{
public:
Class1() {}
~Class1() {}
T func();
};
template <class T>
T Class1<T>::func()
{
std::cout << "non-specialized version\n";
return T();
}
template<>
std::string Class1<std::string>::func()
{
std::cout << "string version\n";
return "woot";
}
int main()
{
Class1<int>().func();
Class1<std::string>().func();
}