我要编译:
#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/