相关疑难解决方法(0)

在C++中声明没有隐式转换的类型

我想声明我自己的数字类型,就像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++

14
推荐指数
1
解决办法
1511
查看次数

标签 统计

c++ ×1