是否有可能做沿的线的东西:

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例如)工作。也许这会给你如何解决问题的想法 - 即重载函数

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top