问题简述如下:
template
void display(T data){
if(is_int(T)) // how to check if T is int in this function is_int
printf(" %d", data);
if(is_float(T)) // how to check if T is float in this function is_float
printf(" %f", data);
if(is_class(T)) // how to check if T is class in this function is_class
data.display();
}
这里假设T可以是int或float的类型或类 .
如果我定义了一些变量并希望使用相同的函数显示它们的值:
int a = 10:
float b = 2.7;
A_Class c;
display(a);
display(b);
display(c);
display(new int(3));
display(new float(1.899));
display(new float(1));
使用std :: is_integral :: value不适用于这样的情况:
display(new int(3));
display(new float(1.899));
display(new float(1));
因为这些变量不是基本类型的类 . 那么对于这种情况,我们如何判断new int(),new float()的类型(int或float)?