To avoid ambiguity, the indirect base class is made ,virtual base class, to define base class as virtual. When we define virtual base class, compiler take care that only one copy of that class inherited, regardless of how many inherited path exist between the virtual base class and derived class.