【发布时间】:2012-09-12 22:34:00
【问题描述】:
我有一个模板基类。让我们说吧。
template<class KeyF>
class Base
{
private:
int member1;
char member2;
....
};
我从上面的类派生了另一个类。
template<class KeyF>
class Derived : public Base<KeyF>
{
public:
void func1() {
<accessing member1/member2>
}
....
};
以上代码不能在 gcc 中编译。说 member1 不是 Derived 的成员。但是它已经派生自一个基类,那为什么不能访问它的成员呢?
【问题讨论】:
-
member1和member2应该声明为protected或者更好的是,您应该为它们提供受保护的 getter/setter。 -
xaizek 是正确的,但也请参阅 this question - 您需要使用
this->限定这些访问。
标签: c++ class templates gcc compiler-errors