类可以前向声明,但是定义不能定义对象,只能定义引用或者指针。
#include <iostream>
#include <math.h>
using namespace std;
class A;
class B
{
public:
int t;
A *aa;
};
class A
{
public:
int t;
};
int main()
{
B * mm = new B;
mm->t=0;
cout<<mm->t<<endl;
mm->aa->t = 1;
cout<<mm->aa->t<<endl;
有的人说,如果不能定义对象,在定义引用的时候要初始化,这则么初始化啊。似乎这里道理,但实际上引用都是用在函数类型或者函数参数里面,所以可以做引用,如下面的例子,但实际在用之前要做好类的定义。
#include <iostream>
#include <math.h>
using namespace std;
class A;
class B
{
public:
int t;
A *aa;
void fuk(A&b); //前向声明定义引用
};
class A //类的完整声明,有这个前面的类的引用和指针才能排上用场
{
public:
int t;
};
void B:: fuk(A&b){b.t=10;};
int main()
{
B * mm = new B;
mm->t=0;
cout<<mm->t<<endl;
mm->aa->t = 1;
cout<<mm->aa->t<<endl;
A sb;
mm->fuk(sb);
cout<<sb.t<<endl;