Compiler Error C2603

illegal access declaration: 'class1' is not a direct base of 'class2'

The specified class or structure (class2) contained an access declaration for a member of a class or structure (class1) that was not a direct base.

To change the access to a member of an indirect base class, use its qualified name in the public or protected part of the derived class declaration. The qualified name must specify a direct base class.

The following is an example of this error:

struct A
{
   int a, a2;
};
struct B : A {};
struct C : B
{
   A::a2;  // error, A is not a direct base
   B::a;   // OK, qualified name specifies a direct base
};