所以我想创建一个类,它可以有一个类型为其本身的对象。
像这样的东西:
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;
}
这样我就可以拥有一个始终以“goo”对象终止的递归对象。
有办法制作吗?
不,这根本不可能。想想看:类将具有无限的大小(好吧,除非它没有其他成员,我想,但是它是做什么的?),并且没有可证明的定义/身份。
您可以存储指向其他对象的指针foo
不过,对象。只要不是每个foo
有一个成员指针does指向另一个foo
,或者引用是否形成循环依赖。无论哪种方式,编译器都不会以您尝试的解决方案所必须的方式诊断此问题,但如果您不小心,您可能会在运行时发现麻烦。
您的代码表明您正在实现一棵树。这就是原因(嗯,我想是其中之一)std::map
,通常是一棵树,动态创建其节点并用指针链接它们。每个链表实现也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)