40 lines
946 B
C++
40 lines
946 B
C++
/*
|
||
使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
|
||
尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
|
||
也不能在内联成员函数中使用该类的对象。请看下面的程序段:
|
||
*/
|
||
|
||
//第一种
|
||
#include<iostream>
|
||
class Fred; //前向引用声明
|
||
class Barney {
|
||
Fred x; //错误:类Fred的声明尚不完善
|
||
};
|
||
class Fred {
|
||
Barney y;
|
||
};
|
||
|
||
|
||
//第二种
|
||
class Fred; //前向引用声明
|
||
|
||
class Barney {
|
||
public:
|
||
void method()
|
||
{
|
||
x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用
|
||
}
|
||
private:
|
||
Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针
|
||
};
|
||
|
||
class Fred {
|
||
public:
|
||
void yabbaDabbaDo();
|
||
private:
|
||
Barney* y;
|
||
};
|
||
|
||
/*
|
||
总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
|
||
*/ |