返回具有指定类型的泛型函数

return a generic function with specified type

本文关键字:泛型 函数 类型 返回      更新时间:2023-10-16

如果我有一个类型为 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
}

下面是类模板的成员函数显式专用化的示例:

#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 versionn";
    return T();
}
template<>
std::string Class1<std::string>::func()
{
    std::cout << "string versionn";
    return "woot";
}
int main()
{
    Class1<int>().func();
    Class1<std::string>().func();
}