【发布时间】:2012-03-01 15:03:14
【问题描述】:
我有一个模板类,并想编写一个能够识别模板已实例化为哪种类型的成员方法。
我需要创建一个包含以下类型信息的字符串标识符:
- 位深度
- 签名或未签名
- 浮点或整数或字符
该方法应返回按以下方式组成的字符串:
字符串:(BIT_DEPTH)-(U|S)-(C|I|F)
BIT_DEPTH -> 是用来表示类型的位数
U | S -> 描述类型是有符号还是无符号
C |我 | F -> 描述类型是 char int 还是浮点数
我想到了一种查找位深度的方法:
int bitDepth = sizeof(TemplateType) * 8;
还好吗?
但不知道如何找到我需要的其他信息,除非像下面这样的 switch-case 声明是可以的(但不要这么认为):
THE FOLLOWING IS PSEUDO CODE THAT YOU SHOULD HELP ME EXPRESS IN A CORRECT SYNTAX
switch(TemplateType){
case signed: ...;
case unsigned: ...;
default: ...;
}
我的问题有两个:
- 位深计算是否正确?
-
switch-case声明是个好主意吗? (如果是,请更正语法)
【问题讨论】:
-
您考虑过运行时类型识别吗? (RTTI?)和/或 dynamic_cast 或 reinterpret_cast 并以某种方式测试结果?
-
@theroyouknow 实际上不,我对这些东西很陌生。你能给我指点方向吗?
-
唯一的解决方案是上面提到的RTTI,但我个人建议重新设计并利用多态性