使typedef不兼容

时间:2012-02-22 11:23:57

标签: c++

情况:

typedef int TypeA;
typedef int TypeB;

我需要使TypeA与TypeB不兼容(因此任何将TypeA分配给TypeB的尝试都会触发编译错误),同时保留内置类型(运算符)提供的所有功能。

一种方法是将每种类型包装到单独的结构/类中(并重新定义所有运算符等)。

还有其他更优雅的方法吗?

不允许使用第三方库。不支持C ++ 0x / C ++ 11x。 (支持C ++ 2003)

2 个答案:

答案 0 :(得分:4)

唯一的方法是创建一个新类型(例如使用BOOST_STRONG_TYPEDEF)。

答案 1 :(得分:0)

要触发编译器错误,您可以将这两种类型作为类。在TypeA中,创建转化为/ TypeB的转化运算符和/或构造函数 - 并使这些方法私有

这样,从TypeBTypeA的任何转换都会调用转换函数,编译器会发出该方法为私有的错误!确保您可能需要编写一些转换运算符/构造函数,以便成功实现转换。我的意思是,如果你想从float进行转换,你需要编写构造函数float,等等其他类型。

您可以在TypeATypeB中编写转换运算符,构造函数,以及这些类中允许的转换列表。