Dostęp do chronionego elementu klasy w klasie pochodnej
Mam tutaj starą bazę kodu, w której używali chronionych zmiennych składowych. To, czy jest to dobry pomysł, można omówić. Jednak kod musi być dobrze skompilowany z gcc3. Mam pasek wyprowadzonej klasy szablonu, który używa chronionego elementu x z szablonu klasy Foo tak
template <class Something> class Foo {
public:
// stuff...
protected:
some::type x;
}
template <class Something> Bar : Foo<Something> {
public:
void cleanup();
}
W deklaracji metody cleanup () jest coś zrobionego z x
template <class Something> void Bar<Something>::cleanup() {
doSomeThingCleanUpLike (x);
}
To nie działa z gcc4, chociaż powinno działać z gcc3. Działa po zmianie na
doSomeThingCleanUpLike (this->x);
Dlaczego tak jest?