如何使用具有相互依赖关系的模板类?

时间:2018-07-18 08:38:29

标签: c++ templates

我有一个非常简单的问题-但找不到任何解决方案。我想两次使用模板类,但是在模板参数中具有相互依赖性。

我想写这样的东西:

template<class T> class X
{
};

class B;
using A = X<B*>;
using B = X<A*>;

我的问题是,我需要在A的定义中使用类型B,但是对于B的定义,我需要使用类型A。并且像“类B”这样的前向声明不起作用。

Microsoft Visual Studio 2017说: 错误C2371:“ B”:新定义;不同的基本类型。

我需要的是类似“ B型”的东西。我可以告诉编译器,B是类型。对于指针,它的类型无关紧要。

1 个答案:

答案 0 :(得分:1)

使用没有定义一个类,这就是为什么您不能转发它的原因。使用或多或少定义了一个占位符。

您可以只使用包装器类并转发它们:

comboBox.getStore().getAt(3).get('id'); // assuming `index = 3`