Compiler Error C2500

'identifier1' : 'identifier2' is already a direct base class

The specified class (or structure) appeared more than once in a list of base classes for a derived class.

A class is called a direct base if it is mentioned in the base list. A class is called an indirect base if it is not a direct base but is a base class of one of the classes mentioned in the base list.

A class cannot be specified as a direct base class more than once. A class can be used as an indirect base class more than once.

The following is an example of this error:

class A { };
class B : public A, public A { };    // error
class C : public A { };
class D : public A { };
class E : public C, public D { };    // OK, contains two As