我有一个模板基类。可以说。
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 的成员。但它已经从基类派生了,那为什么它不能访问它的成员呢?
您需要在基本成员名称前添加
this->
或 Base<KeyF>::
前缀,或者向类添加 using
声明以取消隐藏它们。他们的名字是从属名称,并且是隐藏的。
Base
中的成员是private
。您无法在本课程之外访问课程的 private members
(friend
除外)。让它们 protected
,或者让 protected getters
。
您尝试过受保护吗?自从我深入 C++ 以来已经有一段时间了...
::member1”。