【发布时间】:2015-08-08 04:29:49
【问题描述】:
有人能告诉我为什么我会得到这个吗?这没有意义。
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;
}
【问题讨论】:
-
I thought a template variable can hold any data type你对什么是模板有误解。 -
您的所有
getXxx()函数返回什么?他们需要返回一个t类型的值。 -
@VMNova
So should I do out = (t)getXxx()。你真的想用这段代码完成什么?模板应该是类型安全的,因此不需要进行强制转换。事实上,switch的全部内容都违背了模板的目的。 -
@VMNova 不要用向我们展示更多代码来描述。您编写代码的目的是什么?它当然不值得作为模板。好的模板代码不应该需要像那样测试什么类型。还不如创建一个重载函数并放弃模板。
-
@VMNova C# 不是 C++。
标签: c++ templates type-conversion