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?

questionAnswers(2)

yourAnswerToTheQuestion