#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();
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KCi8vL3Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYKLy8gQS5oCiNwcmFnbWEgb25jZQoKY2xhc3MgQjsJLy8g5YmN5pa55a6j6KiACgpjbGFzcyBBCnsKcHVibGljOgoJQiogb2JqMTsKfTsKLy9eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCi8vdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dgovLyBCLmgKI3ByYWdtYSBvbmNlCmNsYXNzIEIKewpwdWJsaWM6Cgl2b2lkIGZ1bmNCKCkgCgl7CgkJc3RkOjpjb3V0IDw8ICJCOjpmdW5jQigpIiA8PCBzdGQ6OmVuZGw7Cgl9Cn07CgovL15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKLy92dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dgovLyBDLmgKCi8vI2luY2x1ZGUgIkEuaCIJCS8vIOKGkOOBk+OCjOOBrmluY2x1ZGXjgpLlv5jjgozjgabjgovjgpPjgaDjgo3jgYYKLy8jaW5jbHVkZSAiQi5oIgkJLy8g4oaQCgpjbGFzcyBDCnsKcHVibGljOgoJdm9pZCBmdW5jQygpCgl7CgkJQSogYSA9IG5ldyBBOwoJCWEtPm9iajEgPSBuZXcgQjsKCQlhLT5vYmoxLT5mdW5jQigpOwoJfQp9OwovL15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKLy92dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dgovLyBtYWluLmNwcAoKLy8jaW5jbHVkZSAiQy5oIgoKaW50IG1haW4oKQp7CglDIGM7CgljLmZ1bmNDKCk7Cn0K