MISRA.VIRTUAL.BASE.DIAMONDBase class is used as virtual not in diamond hierarchy. MISRA-C++ Rule 10—1—2 (required): A base class shall only be declared virtual if it is used in a diamond hierarchy.RationaleThe use of virtual base classes can introduce a number of undefined and potentially confusing behaviours. Therefore, a base class shall only be declared virtual if that base class is to be used as a common base class in a diamond hierarchy. Exampleclass A {}; class B1: public virtual A {}; // Compliant — A is a common base for C class B2: public virtual A {}; // Compliant — A is a common base for C class C: public B1, B2 {}; class D: public virtual A {}; // Non-compliant |