class Foo{
Bar b;
};
class Bar{
Foo a;
};
这个编译肯定不通过 ,请问应该怎么解决。
不好意思 豆豆少。
class Bar;
class Foo;
class Foo {
Bar* pb; // 只能是指针, 对于 Bar b 来说, 此时编译器还不知道 Bar 的大小.
};
class Bar {
Foo* pf; // 同理
};
我隐隐约约的知道 你什么意思 ,可以把这个问题 ,再说的详细一点吗?谢了!
@风逝一线天: 在编译的时候, 编译器必须知道每一个类型的 size, 在你的例子中, Foo, Bar 嵌套定义, Foo Bar 相互不能知道对方的 size, 从而编译器无法分配空间. 想法, 如果使用指针(Bar* pbar), 则 size 是固定的 32 bit 或 64 bit.
你们讨论的是什么语言啊?我觉得C#中这应该是没问题的。
是c++里面的
采用指针就行。因为当计算Foo的大小的时候,需要知道Bar的大小。如果不用指针,也可以提前声明Bar
也可以使用引用
这个叫做前置申明。你搜索一下c++前置申明就行了