-
2009-12-08
c/c++相互包含的类定义
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://changed-wind.blogbus.com/logs/53171454.html
这是比较让人困惑的地方
#include <stdio.h>
class A;
class B{
public:
- B( A* a)
| {
|- parent = a;
| }
|
| void print_parent_aa();
| #if 0
| {
|- printf( "A.aa = %d\n" , parent->get_aa() );
| --------
| }
| #endif
| A *parent;
};
class A{
public:
- A( int init = 55 ) : b( this )
| {
|- aa = init;
| }
|
| void print_b()
| {
|- b.print_parent_aa();
| }
|
| int get_aa(){
|- return aa;
| }
|
| B b;
| int aa ;
};void
B::print_parent_aa(){
- printf( "A.aa = %d\n" , parent->get_aa() );
}注意红色的字样:
当采取声明来互相包含类定义的时候,最内层一方(如B)必须不能使用指针操作具体的成员对象或者函数在内联函数中,但是可以在类的普通函数中使用
收藏到:Del.icio.us








评论