有人可以告诉我为什么我会这样做?它没有意义。
enum type{
Entity = 1,
String = 2,
Vector = 4,
Float = 5,
Integer = 6
};
template <typename t>
t field(){
t out;
float* fOut;
//Get the return type
switch(getType(0)){ //This isn't needed, just ignore it :)
case Integer:
out = getInt(5);//int getInt(int test) { return test; }
break;
case Float:
out = getFloat(1.7f);//int getFloat(float test) { return test; }
break;
case String:
out = getString(":(");//int getString(char* test) { return test; }
break;
case Vector:
getVector(0);//int getString(float* test) { return test; }
break;
}
return out;
}
答案 0 :(得分:1)
您只能将可转换为t
的类型分配给out
。
您已拨打field<char*>()
,因此您只能将类型转换为char*
。您调用char*
的{{1}}确定了field
的类型。
C ++是strongly typed。不要让out
让你感到困惑。在编译时,编译器将其转换为常规函数。所以编译器实际发出警告的代码如下所示:
template