Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回具有指定类型的泛型函数_C++_Class_Templates_Generics - Fatal编程技术网

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

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>

如果我有一个类型为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>
#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()
{

你到底想做什么?你如何使用这段代码?什么是“问题”/“错误”?显式专门化。没有“泛型类”这样的东西。只有“类模板”.这种误解似乎是许多初学者困惑的根源。是的,确实存在这样一种情况,但是你能告诉我短语“泛型类”和“类模板”之间有什么区别吗?你到底想做什么?你是如何使用这段代码的?什么是“问题”/“错误”?明确的专门化。没有所谓的“泛型类”。只有“类模板”。这种误解似乎是许多初学者困惑的根源。是的,确实存在这样一种情况,但你能告诉我“泛型类”和“类模板”之间的区别吗?