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?