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