我知道在C++类型的递归定义的问题为成员变量:理解为函数的返回类型的“相互递归问题”
#include "B.h"
class A
{
B b;
};
#include "A.h"
class B
{
A b;
};
编译器抱怨这是因为以这种递归方式分配内存是不可能的。
我不明白的是,这似乎适用于函数的定义,以及:
#include "B.h"
class A
{
B foo();
};
#include "A.h"
class B
{
A bar();
};
编译器给出了同样的错误:
error: ‘A’ does not name a type
error: ‘B’ does not name a type
为什么就是它?编译器需要为返回类型保留空间对我来说没有意义。我应该用指针和前向声明来解决这个问题吗?根据我的经验(来自Java),程序员做这些递归定义来设计软件是很常见的。在C++中实现这一点似乎很难。
是需要为返回值保留空间。 Java通过引用返回所有类对象。 –
正向引用足以解决你的相互依赖关系。 – Jarod42
我的问题不好?我想知道为什么有降薪。也许有人可以给我一些反馈,下次我可以改进。我会很感激。 – aeduG