
#include <iostream>

///vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// A.h
#pragma once

class B;	// 前方宣言

class A
{
public:
	B* obj1;
};
//^^^^^^^^^^^^^^^^^^^^^^^^

//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// B.h
#pragma once
class B
{
public:
	void funcB() 
	{
		std::cout << "B::funcB()" << std::endl;
	}
};

//^^^^^^^^^^^^^^^^^^^^^^^^

//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// C.h

//#include "A.h"		// ←これのincludeを忘れてるんだろう
//#include "B.h"		// ←

class C
{
public:
	void funcC()
	{
		A* a = new A;
		a->obj1 = new B;
		a->obj1->funcB();
	}
};
//^^^^^^^^^^^^^^^^^^^^^^^^

//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// main.cpp

//#include "C.h"

int main()
{
	C c;
	c.funcC();
}
