如何使用typeid获取使用typedef定义的类型名称

4

我的问题是:

我定义了一个新类型,并使用该新类型声明了一个变量:

typedef int new_type;
new_type value;

我需要使用typeid获取new_type的字符串,但如果我使用:

typeid(value)

它将返回 int,而不是 new_type。

有没有办法将 new_type 以字符串的形式返回?

谢谢!


我不是很确定,但似乎没有办法使用 typeid 来实现这个。也许预处理器的字符串化会适合你? - lisyarus
@lisyarus CPP的字符串化无法帮助,因为重点是要使用typeid(value)(带有变量!)。 - πάντα ῥεῖ
你想用这种方式解决什么问题?也许有更好的方法,而不是使用 typeid() - πάντα ῥεῖ
1个回答

5
typedef并非自己的类型,而是原始类型的别名。考虑它是原始类型的替身。

"有没有办法将new_type作为字符串返回?"

由于它不是自己的实际类型,所以不行。
请记住,typeid()内部函数中有id,这意味着它应该始终返回(实际上)相同类型的相同标识符
我能想到的唯一方法是创建一个行为与int完全相同的包装器class / struct。 但我怀疑这样做是否值得努力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接