给定一个模板类,如下所示:
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 许可协议
给定一个模板类,如下所示:
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 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我的答案补充了其他答案,因为我发现的解决方案实际上通过 在所有参数都已知(或作为默认值提供)时 创建一个新类型来减轻对模板类前向声明的需求,因此这种新类型,而不是你可以前向声明的,不是不再是模板:
然后你可以
class Mappings;
。我知道这个解决方案并不适用于任何地方,但它适用于我的用例,因为我只在单元测试上下文中为非虚拟方法使用高性能依赖注入模板。