如何转发声明一个 C 模板类?

新手上路,请多包涵

给定一个模板类,如下所示:

 template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
    ...
    Type valueFor(const IDType& id) { // return value }
    ...
};

有人如何在头文件中转发声明这个类?

原文由 Tron Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 448
1 个回答

我的答案补充了其他答案,因为我发现的解决方案实际上通过 在所有参数都已知(或作为默认值提供)时 创建一个新类型来减轻对模板类前向声明的需求,因此这种新类型,而不是你可以前向声明的,不是不再是模板:

 template<typename Type=MyDefault, typename IDType=typename Type::IDType>
class MappingsGeneric
{
...
};

class Mappings : public MappingsGeneric<> {};

然后你可以 class Mappings; 。我知道这个解决方案并不适用于任何地方,但它适用于我的用例,因为我只在单元测试上下文中为非虚拟方法使用高性能依赖注入模板。

原文由 Roland Sarrazin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏