Objects inside Classes | Sololearn: Learn to code for FREE!


Objects inside Classes

I was wondering if I am allowed to create an object inside a class itself in C++ and if I was, what I would have to keep in mind if this object has a constructor? E.g. creating a base class object in a derived class.

9/21/2017 9:01:53 AM


3 Answers

New Answer


In C++, a class cannot contain an instance of itself as a class member, because the class itself is not well-defined at that point, which will cause the compiler to throw errors, telling you that your class is of an incomplete type. However, a derived class is able to have an instance of its base class as a class member, because the base class is already well-defined at the time of defining the derived class. That said, there should be no reason for the derived class to need to have an instance of the base class.


Imagine what you would be able to do if class a { public: a obj; }; can compile though. You would be able to do a obj; obj.obj.obj.obj.obj.obj.obj.obj..... all the way.


Thanks for explaining it so well! I already had an idea about it because I did some coding experiments, but I wanted to clarify it for myself.