// FILE : main.cpp
#include <iostream>
using namespace std;
#include "aaa.h"
#include "bbb.h"
#include "ccc.h"
int main() {
AAA mA; cout << "AAA says "; mA.sayWhat(); cout << endl;
BBB mB; cout << "BBB says "; mB.sayWhat(); cout << endl;
CCC mC; cout << "CCC says "; mC.sayWhat(); cout << endl;
cout<<"Hello World";
return 0;
}
// FILE : aaa.h
#ifndef AAA_H
#define AAA_H
#include "iostream"
//#include "bbb.h" // <--Uncomment this for error ;)
class AAA {
public:
//BBB mB; // <--Uncomment this for error ;)
void sayWhat();
};
#endif
// FILE : bbb.h
#ifndef BBB_H
#define BBB_H
#include "aaa.h"
class BBB {
public:
AAA mA;
void sayWhat();
};
#endif
// FILE : ccc.h
#ifndef CCC_H
#define CCC_H
#include "bbb.h"
class CCC {
public:
AAA mA;
void sayWhat();
};
#endif
// FILE : aaa.cpp
#include "aaa.h"
void AAA::sayWhat() { std::cout << "A"; }
// FILE : bbb.cpp
#include "bbb.h"
void BBB::sayWhat() { mA.sayWhat(); std::cout << "B"; }
// FILE : ccc.cpp
#include "ccc.h"
void CCC::sayWhat() { mA.sayWhat(); std::cout << "C"; }