无法从char转换为char *

时间:2015-08-08 04:29:50

标签: c++ templates type-conversion

有人可以告诉我为什么我会这样做?它没有意义。

 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;
}

由于一些奇怪的原因,我得到了这些错误。我认为模板变量可以包含任何数据类型:L enter image description here

1 个答案:

答案 0 :(得分:1)

您只能将可转换为t的类型分配给out

您已拨打field<char*>(),因此您只能将类型转换为char*。您调用char*的{​​{1}}确定了field的类型。

C ++是strongly typed。不要让out让你感到困惑。在编译时,编译器将其转换为常规函数。所以编译器实际发出警告的代码如下所示:

template