Greifen Sie auf ein geschütztes Mitglied einer Klasse in einer abgeleiteten Klasse zu

Ich habe eine alte Codebasis hier, wo sie geschützte Member-Variablen verwendet. Ob dies eine gute Idee ist oder nicht, kann diskutiert werden. Der Code muss jedoch gut mit gcc3 kompiliert worden sein. Ich habe eine abgeleitete Vorlagenklassenleiste, die das geschützte Element x aus der Klassenvorlage Foo wie folgt verwendet

template <class Something> class Foo {  
public:  
// stuff...  
protected:  
  some::type x;  
}

template <class Something> Bar : Foo<Something> {
public:
  void cleanup();
}

Und in der Methodendeklaration von cleanup () wird etwas mit x gemacht

template <class Something> void Bar<Something>::cleanup() {
  doSomeThingCleanUpLike (x);
}

Dies funktioniert nicht mit gcc4, obwohl es mit gcc3 hätte funktionieren sollen. Es funktioniert, wenn ich es ändere

doSomeThingCleanUpLike (this->x);

Warum ist das so?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage