如何让一个班级有两个名字?

时间:2012-12-22 23:51:29

标签: c++

我正在使用的平台/版本之间只有一个区别的库。一个版本调用类btCollisionObject,其他版本调用它btCollisionObjectWrapper。如果我可以使这个类有两个仍然引用该类的名称,那么我的所有问题都将得到解决。我试过了:#define btCollisionObject btCollisionObjectWrapper;但它没有用。在定义类之后给出类两个名称的正确方法是什么?

2 个答案:

答案 0 :(得分:11)

也许

typedef btCollisionObjectWrapper btCollisionObject;

最好使用语言工具代替预处理器。

答案 1 :(得分:7)

如果我正确理解您的问题,您将不得不找到一种方法来确定您正在编译哪个平台,因为我不知道您使用的是哪个平台我无法就此提出任何建议,但可能有可能通过宏来做到这一点。

您的问题的解决方案可能看起来有点像这样。

在C ++ 98中使用类型声明

#ifdef __PLATFORM_SPECIFIC_DEFINE
    typedef btCollisionObjectWrapper btCollisionObject;
#endif

在使用别名声明的C ++ 11中,这有一个额外的好处,它们可以与模板一起使用,但在你的情况下,你可以使用简单的typedef。

#ifdef __PLATFORM_SPECIFIC_DEFINE
    using btCollisionObject = btCollisionObjectWrapper;
#endif

这样您就可以使用btCollisionObject作为使用btCollisionObjectWrapper的平台的类名

您当然必须将__PLATFORM_SPECIFIC_DEFINE替换为使用btCollisionObjectWrapper的平台定义的宏。