Search code examples
c++oopsyntaxcomposition

Object dependency in C++. What is the syntax for class composition?


Class are have written my classes in different files. Such as:

-main.cpp
-ClassA.cpp
-ClassB.cpp
-ClassC.cpp

main.cpp has the #include for all classes, but I also need to access Object instantiated from ClassA in main inside ClassB and ClassC.

main.cpp

#include "ClassA.cpp"
#include "ClassB.cpp"
#include "ClassC.cpp"

ClassA objA;
ClassB objB(objA);
ClassB objC(objA);

. .

classB.cpp

#include "ClassB.cpp" //How to avoid the double declaration and yet make the class recognizable?

class ClassB{
  public: 
   ClassA objA;
   ClassB(ClassA obj){
    this->objA = obj; // Is it the right way in C++?
   }
 };

I know it is not right. But why not? In Java makes sense.


Solution

  • Declare your classes in header files. E.g. "ClassB.h":

    #include "ClassA.h" // if it's referenced by the subsequent class declaration, you likely need that class's header file as well.
    
    class ClassB{
      public: 
       ClassA objA;
       ClassB(ClassA obj);
     };
    

    Implement your class in a .cpp file. E.g. "ClassB.cpp"

    #include "ClassB.h"
    ClassB::ClassB(ClassA obj)
    {
        objA = obj;
    }
    

    Repeat for your other classes.