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