引用尚未定义的对象

时间:2012-02-23 19:34:37

标签: c++

我有两个需要彼此指向的对象...唯一的问题是,因为它们是按特定顺序声明的,所以其中一个或另一个不知道存在的另一个对象。例如:

...
#define foobar_h

class Foo {
  Bar* b;
};

class Bar {
  Foo* f;
};

...

我如何声明这些类,以便他们能够快乐地引用彼此?

1 个答案:

答案 0 :(得分:10)

您做了预申报:

class Bar;

class Foo {
  Bar* b;
};

class Bar {
  Foo* f;
};

这使编译器知道类型Bar是一个类,因此它可以正确地找出如何表示它的指针。

当然,这仅适用于不需要Bar类型值的确切布局和大小的情况,如果您尝试使用以下内容嵌入值:

class Foo {
  Bar my_bar;
};

你未能成功,但既然你使用指针就可以了。引用也起作用,因为引用没有嵌入整个对象。