我有两个需要指向彼此的对象...唯一的问题是,由于它们是按特定顺序声明的,所以一个或另一个不知道另一个对象是否存在。例如:
...
#define foobar_h
class Foo {
Bar* b;
};
class Bar {
Foo* f;
};
...
我怎样才能声明这些类,以便它们能够愉快地相互引用?
最佳答案
你做一个预声明:
class Bar;
class Foo {
Bar* b;
};
class Bar {
Foo* f;
};
这让编译器知道 Bar
类型是一个类,因此它可以正确地找出如何表示指向它的指针。
当然,这仅在不需要 Bar
类型的值的确切布局和大小时有效,如果您尝试嵌入一个值:
class Foo {
Bar my_bar;
};
你没能成功,但既然你用了指针,那就没问题了。引用也起作用了,因为引用不会嵌入整个对象。
关于c++ - 引用尚 undefined object ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419935/