Accessing a Class-Internal Type

Accessing a Class-Internal Type

Here’s a common error: you define a class-internal type, say an enum or typedef, and then try to use it as the return type of that class’s member function:

 class A{public: enum sizes {small, medium, large}; sizes default_size() const{ return medium;}};

Up until now, all is fine. However, at a later stage you decide to move the body of default_size() outside the class:

 sizes A::default_size() const{  return medium;}

All of a sudden, the compiler is moaning and bitching at you that ‘sizes’ is an unknown type. The problem is that outside the scope of class, you must use a qualified name to refer to an internal type, as follows:

 A::sizes A::default_size() const{   return medium;}

remember that the compiler recognizes the non-qualified names defined within a class only within that class’s scope.


Share the Post: