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

Ste*_*cto 6 c++

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

K-b*_*llo 11

也许

typedef btCollisionObjectWrapper btCollisionObject;
Run Code Online (Sandbox Code Playgroud)

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


cto*_*tor 7

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

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

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

#ifdef __PLATFORM_SPECIFIC_DEFINE
    typedef btCollisionObjectWrapper btCollisionObject;
#endif
Run Code Online (Sandbox Code Playgroud)

在使用别名声明的 C++ 11中,这具有额外的优势,它们可以与模板一起使用,但在您的情况下,您可以使用简单的typedef.

#ifdef __PLATFORM_SPECIFIC_DEFINE
    using btCollisionObject = btCollisionObjectWrapper;
#endif
Run Code Online (Sandbox Code Playgroud)

这将允许您用作使用btCollisionObject的平台的类名btCollisionObjectWrapper

您当然必须__PLATFORM_SPECIFIC_DEFINE使用由使用的平台定义的宏替换btCollisionObjectWrapper.