HeadTest.cpp
#pragma once
#include "stdafx.h"
#include "A.h"
int _tmain(int argc, _TCHAR* argv[])
{
CA *pA = NULL;
CB *pB = NULL;
pB = new CB(pA);
pA = new CA(pB);
pA->AStart();
return 0;
}
A.h
#pragma once
#ifndef _A_H_
#define _A_H_
#include "B.h"
class CA
{
private:
CB *m_pB;
public:
CA(CB *pB) : m_pB(pB)
{
}
void AStart();
void AEnd();
};
#endif
B.h
#pragma once
//
#ifndef _B_H_
#define _B_H_
class CA;
class CB
{
private:
CA *m_pA;
public:
CB();
CB(CA *pA) : m_pA(pA) {}
void BStart();
};
#endif
A.cpp
#include "stdafx.h"
#include "A.h"
void CA::AStart()
{
m_pB->BStart();
}
void CA::AEnd()
{
}
B.cpp
#include "stdafx.h"
#include "A.h"
#include "B.h"
void CB::BStart()
{
m_pA->AEnd();
}
或者
HeadTest.cpp
#pragma once
#include "stdafx.h"
#include "A.h"
int _tmain(int argc, _TCHAR* argv[])
{
CA A;
A.AStart();
return 0;
}
A.h
#pragma once
#ifndef _A_H_
#define _A_H_
#include "B.h"
class CA
{
private:
CB B;
public:
CA()
{
}
void AStart();
void AEnd();
};
#endif
B.h
#include "stdafx.h"
#include "A.h"
#include "B.h"
void CB::BStart()
{
m_pA->AEnd();
}
A.cpp
#include "stdafx.h"
#include "A.h"
void CA::AStart()
{
B.BStart();
}
void CA::AEnd()
{
}
B.cpp
#include "stdafx.h"
#include "A.h"
#include "B.h"
void CB::BStart()
{
m_pA->AEnd();
}