我要编译:

#include<iostream>
#include"gettype.*"
using namespace std;


int main() {
int i;
cout << getType(i) << endl;
unsigned int ui;
cout << getType(ui) << endl;
char c;
cout << getType(c) << endl;
double d;
cout << getType(d) << endl;
bool b;
cout << getType(b) << endl;
float f;
cout << getType(f) << endl;
}


以此为模板:

#ifndef GETTYPE_T
#define GETTYPE_T

template <typename T>
std::string getType(T t) { return "unbekannter Typ";}
template<typename T> std::string getType(int t) { return "int";}
template<typename T> std::string getType(unsigned int t) { return "unsigned                  int";}
template<typename T> std::string getType(double t) { return "double";}
template<typename T> std::string getType(char t) { return "char";}
template<typename T> std::string getType(bool t) { return "bool";}
#endif


我在代码块中从控制台收到此错误:

||=== Build: Debug in gettype.t (compiler: GNU GCC Compiler) ===|
gettype.t.c|6|error: expected '=', ',', ';', 'asm' or '__attribute__' before     '<' token|
gettype.t.c|9|error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token|
gettype.t.c|10|error: expected '=', ',', ';', 'asm' or '__attribute__'        before '<' token|
gettype.t.c|11|error: expected '=', ',', ';', 'asm' or '__attribute__'    before '<' token|
gettype.t.c|12|error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token|
gettype.t.c|13|error: expected '=', ',', ';', 'asm' or '__attribute__'  before '<' token|
||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


我不知道这是怎么回事... :-(提前告知您的时间:-)
干杯。

最佳答案

您不需要“专门化”函数的模板版本,只需要重载即可,对于已知类型,无需template<typename T>即可:

std::string getType(int t) { return "int";}
std::string getType(bool t) { return "bool";}


等等。这些将使模板版本超载。

关于c++ - 模板错误代码块,C++,代码块,错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38378015/

10-14 16:45
查看更多