fork download
  1.  
  2. #include <iostream>
  3.  
  4. ///vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  5. // A.h
  6. #pragma once
  7.  
  8. class B; // 前方宣言
  9.  
  10. class A
  11. {
  12. public:
  13. B* obj1;
  14. };
  15. //^^^^^^^^^^^^^^^^^^^^^^^^
  16.  
  17. //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  18. // B.h
  19. #pragma once
  20. class B
  21. {
  22. public:
  23. void funcB()
  24. {
  25. std::cout << "B::funcB()" << std::endl;
  26. }
  27. };
  28.  
  29. //^^^^^^^^^^^^^^^^^^^^^^^^
  30.  
  31. //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  32. // C.h
  33.  
  34. //#include "A.h" // ←これのincludeを忘れてるんだろう
  35. //#include "B.h" // ←
  36.  
  37. class C
  38. {
  39. public:
  40. void funcC()
  41. {
  42. A* a = new A;
  43. a->obj1 = new B;
  44. a->obj1->funcB();
  45. }
  46. };
  47. //^^^^^^^^^^^^^^^^^^^^^^^^
  48.  
  49. //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  50. // main.cpp
  51.  
  52. //#include "C.h"
  53.  
  54. int main()
  55. {
  56. C c;
  57. c.funcC();
  58. }
  59.  
Success #stdin #stdout 0s 3016KB
stdin
Standard input is empty
stdout
B::funcB()