两个类A和B实现互相调用彼此的方法,如果采用彼此包含对方头文件的方式会出现循环引用,所以采用了类的前置声明的方式
1,class A采用前置声明的方式声明class B
2,在ClassB的头文件中包含class A 的头文件
3,在class A中只能声明class B类型的指针或者引用
具体代码如下:
A.h:
#pragma once
class B;
class A
{
public:
A();
A(class B* pB);
~A();
public:
void displayA();
void invokeClassBInClassA();
private:
class B *mB;
};
A,cpp
#include "A.h"
#include "B.h"
#include <iostream>
using namespace std;
A::A()
{
}
A::A(B * pB)
{
mB = pB;
}
A::~A()
{
}
void A::displayA()
{
cout << "this is A" << endl;
}
void A::invokeClassBInClassA()
{
cout << "class A invoke class B starts>>" << endl;
mB->displayB();
}
#pragma once
#include "A.h"
c