我想声明我自己的数字类型,就像unsigned int一样,但我不希望隐式转换类型.我首先尝试了这个:typedef unsigned int firstID; typedef unsigned int secondID;
但这并不好,因为这两种类型只是unsigned int的同义词,所以可以自由地互换.
我想这会导致错误:
firstID fid = 0;
secondID sid = fid; // no implicit conversion error
Run Code Online (Sandbox Code Playgroud)
但这没关系:
firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Run Code Online (Sandbox Code Playgroud)
我的理由是函数参数是强类型的,例如:
void f( firstID, secondID ); // instead of void f(unsigned int, unsigned int)
Run Code Online (Sandbox Code Playgroud)
我在寻找什么机制?
谢谢
硅
c++ ×1