我很确定以下问题的解决方案是相当标准的,但我找不到合适的术语来搜索它。我有两个班,例如SomeB<A>
和SomeA<B>
。我想创建一个SomeB<A>
的实例,其中A:=SomeA<B>
和B:=SomeB<A>
。 (简化)的代码如下所示:C++简单模板递归
template<typename A>
class SomeB
{
A getA() { /* ... */ }
};
template<typename B>
class SomeA
{
B getB() { /* ... */ }
};
int main(int argc, char **argv)
{
SomeA<SomeB<SomeA<SomeB<...> > > > test;
// /\
// |
// +---- recursion
test.getB();
return 0;
}
现在,我该如何告诉编译器,有没有“suprises”像SomeA<SomeB<SomeA<SomeB<Suprise_AnotherA<...>>>>>
?
你的概念没有意义。 – CashCow 2014-09-22 16:50:03
@CashCow:哪个概念? – Deduplicator 2014-09-22 16:50:30
对不起,但直接递归类型不能在C++中定义。 – Deduplicator 2014-09-22 16:50:53