有没有办法让一个类递归?

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"对象的递归对象.有办法吗?

Lig*_*ica 6

不,这根本不可能.想一想:这个类会有无限大小(好吧,除非它没有其他成员,我想,但那它做了什么?),并且没有可证明的定义/身份.

但是,您可以存储指向其他foo对象的指针.这只要不是每一个作品foo都有一个成员指针确实点到另一个foo,或者引用形成循环依赖.无论哪种方式,编译器都不会以您尝试的解决方案必须的方式对其进行诊断,但如果您不小心,可能会在运行时发现问题.

您的代码建议您实现一棵树.这就是原因(嗯,我想std::map这是少数几个中的一个),它通常是树,动态地创建它的节点并用指针链接它们.和每个链表实现一样.