您可能知道 typedef 更像是 C++ 中的别名而不是新类型,详细信息可以在这里看到:
http://dlang.org/cpptod.html#typedefs
我真的不喜欢链接中提出的解决方案,所以我想知道有没有更好的方法?
最佳答案
只有一种方法可以在 C++ 中引入新类型 - 使用 class 关键字 (union
/struct
/class
/枚举
...)。有一些方法可以将这些东西隐藏在宏后面,并使这些新类型与旧类型一样直观可用(参见 BOOST_STRONG_TYPEDEF
),但事实仍然是它是引入这种新类型的唯一方法。
想象一下,你有一个 newtype
关键字,它构成了一个强类型定义:
newtype foo = int; // with 'using' alias syntax
与该类型之间的转换如何工作?如果没有转换,您永远无法为新类型的对象分配任何值。只有显式转换可能看起来很直观,但是如果您真的想要隐式转换并且仍然能够重载怎么办?好吧,运气不好。您也许可以添加各种语法以将决定权留给用户,但我相信您总是可以提出需要新语法的极端情况。只需将其设为 struct
,将其隐藏在宏后面即可完成。
关于c++ - 有没有办法模拟 "strongdef"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12519667/