我有一个非常简单的问题-但找不到任何解决方案。我想两次使用模板类,但是在模板参数中具有相互依赖性。
我想写这样的东西:
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是类型。对于指针,它的类型无关紧要。
答案 0 :(得分:1)
使用没有定义一个类,这就是为什么您不能转发它的原因。使用或多或少定义了一个占位符。
您可以只使用包装器类并转发它们:
comboBox.getStore().getAt(3).get('id'); // assuming `index = 3`