C++ 返回具有指定类型的泛型函数
如果我有一个类型为T的泛型类,并且我有一个返回类型为T的函数,如果typeid(T)==typedef(string),我希望我的函数返回一个特定的字符串,该怎么办C++ 返回具有指定类型的泛型函数,c++,class,templates,generics,C++,Class,Templates,Generics,如果我有一个类型为T的泛型类,并且我有一个返回类型为T的函数,如果typeid(T)==typedef(string),我希望我的函数返回一个特定的字符串,该怎么办 模板 一班 { 公众: 类别1(); ~Class1(); T func(); }; 模板 T类1::func() { string d=“T=string”; if(typeid(string)=typeid(T)) return(T)d;下面是类模板成员函数显式专门化的示例: #include <iostream>
模板
一班
{
公众:
类别1();
~Class1();
T func();
};
模板
T类1::func()
{
string d=“T=string”;
if(typeid(string)=typeid(T))
return(T)d;下面是类模板成员函数显式专门化的示例:
#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();
}
#包括
#包括
模板
一班
{
公众:
Class1(){}
~Class1(){}
T func();
};
模板
T类1::func()
{
std::cout下面是一个类模板成员函数显式专门化的示例:
#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();
}
#包括
#包括
模板
一班
{
公众:
Class1(){}
~Class1(){}
T func();
};
模板
T类1::func()
{
你到底想做什么?你如何使用这段代码?什么是“问题”/“错误”?显式专门化。没有“泛型类”这样的东西。只有“类模板”.这种误解似乎是许多初学者困惑的根源。是的,确实存在这样一种情况,但是你能告诉我短语“泛型类”和“类模板”之间有什么区别吗?你到底想做什么?你是如何使用这段代码的?什么是“问题”/“错误”?明确的专门化。没有所谓的“泛型类”。只有“类模板”。这种误解似乎是许多初学者困惑的根源。是的,确实存在这样一种情况,但你能告诉我“泛型类”和“类模板”之间的区别吗?