http://stackoverflow.com/questions/4010281/accessing-protected-members-of-superclass-in-c-with-templates

This can be amended by pulling the names into the current scope using using:

template<typename T> struct Subclass : public Superclass<T> { 
using Superclass<T>::b;
using Superclass<T>::g;

void f() {
    g();
    b =3;
}
};

Or by qualifying the name via the this pointer access:

template<typename T> struct Subclass : public Superclass<T> { 
void f() { 
this->g();
this->b = 3;
}
};

Or, as you’ve already noticed, by qualifying the full name.

 

accessing protected members of superclass in C++ with templates