1mp*_*bl3 0 c++ recursion class
所以我想创建一个类,它可以有一个类型本身的对象.像这样的东西:
class foo {
foo Avalue = foo();
foo Bvalue = foo();
foo(int a, int b) {
Avalue = goo(a);
Bvalue = goo(b);
}
foo(foo a, int b) {
Avalue = foo(a);
Bvalue = goo(b);
}
foo(foo a, foo b) {
Avalue = foo(a);
Bvalue = foo(b);
}
}
class goo : foo {
int value;
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以拥有一个总是终止于"goo"对象的递归对象.有办法吗?
不,这根本不可能.想一想:这个类会有无限大小(好吧,除非它没有其他成员,我想,但那它做了什么?),并且没有可证明的定义/身份.
但是,您可以存储指向其他foo
对象的指针.这只要不是每一个作品foo
都有一个成员指针确实点到另一个foo
,或者引用形成循环依赖.无论哪种方式,编译器都不会以您尝试的解决方案必须的方式对其进行诊断,但如果您不小心,可能会在运行时发现问题.
您的代码建议您实现一棵树.这就是原因(嗯,我想std::map
这是少数几个中的一个),它通常是树,动态地创建它的节点并用指针链接它们.和每个链表实现一样.
归档时间: |
|
查看次数: |
92 次 |
最近记录: |