使typedef不兼容

make typedefs incompatible

本文关键字:不兼容 typedef      更新时间:2023-10-16

情况:

typedef int TypeA;
typedef int TypeB;

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

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

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

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

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

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

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

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