Pau*_*aul 14 c++ types type-safety
我想在我的C++程序中使用类似typedef的东西来增强类型安全性.
举个例子,假设我有两个功能
void function1(unsigned idOfType1);
void function2(unsigned idOfType2);
Run Code Online (Sandbox Code Playgroud)
那么我可以错误地将idOfType2传递给function1,反之亦然.我希望编译器在这种情况下给我一个错误.我知道我可以将这些unsigned包装在一个结构中,但是我必须提供一个字段名称并使用它.来访问它们,这有点不方便.这有什么好办法吗?
编辑:据我所知typedef,这不会用于此目的,因为它只是一种类型的简写,不会用于类型检查.
Ste*_*sop 16
使用Boost强类型定义:
typedef为现有类型创建别名.它不会创建可用于匹配函数或模板参数的新类型...使用BOOST_STRONG_TYPEDEF解决了这个问题......
BOOST_STRONG_TYPEDEF是一个宏,它生成一个名为"name"的类包装和它的基本类型的实例,并提供适当的转换运算符,以使新类型可以替换它所包含的类型.
如你所说,typedef在这里不会帮助你.我不能立即想出一个更好的方法,但是如果你在struct/class选项中使用你的包装,你可以使用转换运算符来消除成员方法或函数调用.
例如:
struct WrappedType
{
operator type()
{
return _value;
}
type _value;
}
Run Code Online (Sandbox Code Playgroud)
我并不是说这是在做提个醒方式;-)
| 归档时间: |
|
| 查看次数: |
5020 次 |
| 最近记录: |