c++ - 有没有办法模拟 "strongdef"?

标签 c++ typedef

您可能知道 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/

相关文章:

c++ - 无法跨 DLL 传递 std::wstring

c++ - 了解 openCV 中的特定行

c - 这一系列的 C typedef/struct/union/enum 定义有什么意义?

c - 如何使用 typedef 定义结构

c++ - 如何让Win32 APP背景透明?

c++ - 如何仅在调用函数B之后才允许调用函数A?

objective-c - 分解 objective-c 中的 typedef 结构

c++ - 需要帮助解码这个 typedef

C++ 非类型模板参数 : Is typedef of an integral type an integral type?

c++ - 如何在参数包中找到最大值?