6

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

4

2 回答 2

11

也许

typedef btCollisionObjectWrapper btCollisionObject;

最好使用语言工具而不是预处理器来完成。

于 2012-12-22T23:53:02.973 回答
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.

于 2012-12-23T00:14:44.697 回答