【发布时间】:2014-11-16 17:05:58
【问题描述】:
我很确定以下问题的解决方案非常标准,但我找不到合适的术语来搜索它。我有两个班级,比如说SomeB<A> 和SomeA<B>。我想创建SomeB<A> 的实例,其中A:=SomeA<B> 和B:=SomeB<A>。 (简化的)代码如下所示:
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;
}
现在,我如何告诉编译器没有像 SomeA<SomeB<SomeA<SomeB<Suprise_AnotherA<...>>>>> 这样的“惊喜”?
【问题讨论】:
-
你的概念没有意义。
-
@CashCow:哪个概念?
-
抱歉,C++中不能直接定义递归类型。
-
OP 试图做什么的概念
-
谷歌模板模板参数