Membro protegido de acesso de uma classe em uma classe derivada
Eu tenho uma base de código antiga aqui, onde eles usaram variáveis de membro protegidas. Se isso é ou não uma boa ideia pode ser discutido. No entanto, o código deve ter compilado bem com o gcc3. Eu tenho uma barra de classe de modelo derivada que usa protegido membro x do modelo de classe Foo como assim
template <class Something> class Foo {
public:
// stuff...
protected:
some::type x;
}
template <class Something> Bar : Foo<Something> {
public:
void cleanup();
}
E na declaração de método de limpeza () há algo feito com x
template <class Something> void Bar<Something>::cleanup() {
doSomeThingCleanUpLike (x);
}
Isso não funciona com o gcc4, embora ele deva ter funcionado com o gcc3. Funciona quando eu mudo para
doSomeThingCleanUpLike (this->x);
Por que esse é o caso?