我这里有一个旧的代码库,其中使用了受保护的成员变量。是否使用此方法可以讨论。然而,代码必须能够在gcc3下编译通过。 我有一个派生的模板类Bar,它使用了从类模板Foo继承的受保护成员变量x,如下所示:
template <class Something> class Foo {
public:
// stuff...
protected:
some::type x;
}
template <class Something> Bar : Foo<Something> {
public:
void cleanup();
}
在cleanup()方法的声明中,对x进行了一些操作。
template <class Something> void Bar<Something>::cleanup() {
doSomeThingCleanUpLike (x);
}
这在gcc4下不起作用,尽管它应该在gcc3下正常工作。当我将其更改为以下内容时,它可以工作:
doSomeThingCleanUpLike (this->x);
这是为什么呢?