c++ - 如何在 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 是枚举类,所以我不确定是否可以将基类型与枚举类一起使用。
有没有办法实现这一目标,或者有更好的方法来实现这一目标?
解决方案
对于由#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
}
推荐阅读
- javascript - Binance Futures API:签名无效
- sql - 将数字格式化为两位小数 - Oracle
- python - google colab 上的不同精度
- wordpress - 标题元素上的引荐来源网址/重定向网址
- react-native - React Native - 根据设备旋转移动的组件
- java - 如何计算时间差
- c - 如何理解指针的存储类型
- python - 有人可以帮助为 Python 3.7 编译 GTK/PyGObject All-in-one 吗?
- android - 如何将数据从函数传递到有状态?
- java - 错误:使用 Jhipster - Jib - Docker 运行容器时无法找到或加载主类