代码之家  ›  专栏  ›  技术社区  ›  Patrick

存储类型的类型以处理变量参数列表

  •  0
  • Patrick  · 技术社区  · 15 年前

    是否可以按照以下方式进行操作:

    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,我不知道如何用这种方式使用它。

    谢谢, 帕特里克

    4 回复  |  直到 15 年前
        1
  •  5
  •   Jerry Coffin    15 年前

    一般来说,类型只能在编译时真正地被存储、操作等。如果您在运行时需要一些东西,那么必须将类型转换为某种类型的值(例如枚举)。

    如果你能更高层次地描述一下你真正想在这里完成的工作,也许会更好——变量参数列表和“开关类型”的结合听起来就像即将发生的火车相撞……

        2
  •  1
  •   Willis Blackburn    15 年前

    不是你想的那样。像“int”这样的类型在编译类型中进行计算。要在运行时计算类型。

    可能您希望使“t”引用成为一个函数,或者一个具有虚拟函数的类的实例,每种类型一个。本质上,您需要命令模式,其中命令是“格式化一个值”,命令的不同实例对应于可以格式化的不同类型。

        3
  •  1
  •   Dewfy    15 年前

    使用专业化:

      void smart_print(int t)
      {
         printf("%d", i);
      }
      void smart_print(double f)
      {
         printf("%g", f);
      }
    

    但在模板的帮助下,您还可以解析指向预期函数的指针,因此将指针视为类型的标识符,您将得到所需的结果。

        4
  •  0
  •   Skizz    15 年前

    你应该看看 << >> 运算符用于流类(例如cout和cin)。也许这会让你了解如何解决你的问题——即重载函数。