你可能知道typedef更像是C++中的别名而不是新类型,详情可以在这里看到:http:
//dlang.org/cpptod.html#typedefs
我真的不喜欢链接中提出的解决方案,所以我想知道有没有更好的办法 ?
只有一种方法可以在C++中引入新类型 - 带有类关键字(union/ struct/ class/ enum...).有一些方法可以隐藏宏后面的这些东西,并使这些新类型像旧版一样直观可用(参见参考资料BOOST_STRONG_TYPEDEF),但事实仍然是它是引入这种新类型的唯一方法.
想象一下,你有newtype一个强大的typedef关键字:
newtype foo = int; // with 'using' alias syntax
Run Code Online (Sandbox Code Playgroud)
转换为该类型的转换如何工作?如果没有转换,您永远不能为新类型的对象分配任何值.只有显式转换可能看起来很直观,但是如果你真的想要隐式转换,并且仍能够重载怎么办?好吧,运气不好.您可以添加各种语法来将决定留给用户,但我确信您总是可以提出需要新语法的极端情况.只需将其struct隐藏起来,将其隐藏在宏后面并完成它.
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |