作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想声明我自己的数字类型,就像 unsigned int 一样,但我不希望这些类型被隐式转换。我首先尝试了这个: typedef unsigned int firstID; typedef unsigned int secondID;
但这并不好,因为这两种类型只是 unsigned int 的同义词,因此可以自由互换。
我希望这会导致错误:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
但这没关系:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
我的原因是函数参数是强类型的,例如:
void f( firstID, secondID ); // instead of void f(unsigned int, unsigned int)
我在寻找什么机制?
谢谢
硅
最佳答案
也许是 BOOST_STRONG_TYPEDEF 形式 boost/strong_typedef.hpp会有帮助的。
关于c++ - 在 C++ 中声明没有隐式转换的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2200025/
我是一名优秀的程序员,十分优秀!