我正在尝试以下代码来重载一个简单的函数以适用于多种类型。但是,它无法编译。有人可以告诉我出了什么问题以及如何解决这个问题吗?
typedef struct str1_type
{
int f1;
int f2;
} STR1;
typedef struct str2_type
{
char f1[100];
char f2[100];
}STR2;
template <typename T1, typename T2>
T2 getFieldOffset(const T1& t, int i);
int main() {
STR1 str1;
STR2 str2;
int i = getFieldOffset(str1,0);
const char* test = getFieldOffset(str2,0);
}
template <typename T1, typename T2>
T2 getFieldOffset(const T1& t, int i)
{
switch (i) {
case 0:
return t.f1;
case 1:
return t.f2;
default:
{
cout << "Invalid index passed: i" << i << endl;
return null;
}
}
}
这是错误消息:
test2.cpp:在函数'int main()'中:
test2.cpp:73:错误:没有匹配函数调用'getFieldOffset(STR1&,int)'
test2.cpp:75:错误:没有匹配函数调用' getFieldOffset(STR2&, int)'test2.cpp:在函数'T2 getFieldOffset(const T1&,int)'中:
test2.cpp:90:错误:'null'未在此范围内声明