存储类型的用于处理变量参数列表类型
-
22-09-2019 - |
题
是否有可能做沿的线的东西:
type t = int;//this would be a function which identifies what type the next argument is
if( t == int )
printf( "%d", va_arg( theva_list, t ) );
在一个相对微不足道的方法?的唯一对象我知道,可容纳一个类型是TYPE_INFO,我无法工作,如何以这种方式来使用它。
谢谢, 帕特里克
解决方案
一般而言,没有。类型真的只能被存储,操控等,在编译时。如果你想在运行时的东西,你必须转换(通常是通过相当多毛的元编程)类型某种形式的数值(例如,一个枚举)。
也许这将是更好,如果你给的是什么你真的想在这里完成稍高层次的描述 - 变量参数列表的与声音“的类型开关”像一列火车碰撞即将尝试的组合发生...
其他提示
在没有你想象的方式。像“INT”类型在编译类型进行评估。要评估一个类型在运行时。
可能要进行“t”的参考函数,或具有一个虚函数,一个用于每种类型的一个类的实例。基本上需要的命令模式,其中该命令是“格式化的值”,并且命令对应的到可格式化不同类型的不同的实例。
使用专业化:
void smart_print(int t)
{
printf("%d", i);
}
void smart_print(double f)
{
printf("%g", f);
}
但随着模板的帮助下你也可以解决指针预期的功能,所以对待指针类型的标识,你会得到想要的结果。
您应该看看<<
和>>
怎么算的流类(cout和CIN例如)工作。也许这会给你如何解决问题的想法 - 即重载函数
不隶属于 StackOverflow