首页 > 解决方案 > 如何在 C++ 中返回没有模板的泛型类型?

问题描述

我希望创建一个可以返回泛型类型的方法,然后这个泛型类型可以由我专门定义的其他方法处理。

PCCommand CrossPlatform::GetCommandPC();
XboxCommand CrossPlatform::GetCommandXbox();

? CrossPlatform::GetCommand()
{
    #if PLATFORM == 1
        //PC
        return GetCommandPC();
    #elif PLATFORM == 2
        //xbox
        return GetCommandXbox();
    #endif

}

GetCommandPC 和 GetCommandXbox 都返回不同的类型,那么我如何将它们作为C++中的泛型类型返回?模板的问题,除非我弄错了,否则我必须将一个类型传递给这个函数,但我不知道要传递什么类型,因为预处理器检查将确定正在使用的平台。

目前 PCCommand 和 XboxCommand 是枚举类,所以我不确定是否可以将基类型与枚举类一起使用。

有没有办法实现这一目标,或者有更好的方法来实现这一目标?

标签: c++

解决方案


对于由#defines 控制的跨平台类型:

PCCommand CrossPlatform::GetCommandPC();
XboxCommand CrossPlatform::GetCommandXbox();

#if PLATFORM == 1
    typedef PCCommand CrossPlatformCommand;
#elif PLATFORM == 2
    typedef XboxCommand CrossPlatformCommand;
#endif

CrossPlatformCommand CrossPlatform::GetCommand()
{
    #if PLATFORM == 1
        //PC
        return GetCommandPC();
    #elif PLATFORM == 2
        //xbox
        return GetCommandXbox();
    #endif

}

推荐阅读