将类型存储为变量?对于模板类?

Ube*_*per 1 c++ templates types

我有一个模板化的类,具有以下定义:

ImageRescaleDepth<PIXEL_TYPE_INPUT, PIXEL_TYPE_OUTPUT>
Run Code Online (Sandbox Code Playgroud)

这个类使用模板,因为它应该是通用的几乎所有东西.无论如何我需要制作这个应用程序的命令行版本,进行图像重新缩放,目前系统设置为处理以下类型:

1BIT, 2BIT, 4BIT, unsigned 8 bit, signed 8 bit, unsigned 16 bit, signed 16 bit, unsigned 32 bit, signed 32 bit, float, double.
Run Code Online (Sandbox Code Playgroud)

这些是通过命令行传递的,我将它们转换为枚举.

我无法修改ImageRescaleDepth类,因为它是库的一部分.我并不想创造一个巨大的开关或eliseif块,因为会有100种组合.有可能,我可以以某种方式将这些类型存储为变量?然后将它们传递给构造函数?

小智 5

不,必须在编译时知道模板类的类型,因此必须将模型类型类型提供给模板.我不得不说,如果这个类旨在执行许多不同格式之间的转换,则使用模板参数来指定非常差的设计转换.

  • 我会使用一个映射,键入一对from/to类型(作为枚举或常量,而不是类型名称)到指向某种创建函数的指针.换句话说,一个工厂. (2认同)