有时类成员不会被子类继承

时间:2017-05-26 09:50:27

标签: c++ templates inheritance

当我们创建一个派生自另一个模板类example1的模板类example2时。模板类example1不会系统地继承example2成员。

考虑下面的代码:

template<class T>
class example2 {
protected:
    int a;
public:
    int getA() const {return a;}
};

template<class T>
class example1 : public example2<T> {
    T* p;
public:
    void test() {
        example2<T>::a = 8;
    }
};

在类test的方法example1中,我们必须使用example2<T>::运算符才能访问成员a。否则,编译器会生成错误:'a' was not declared in this scope

我的意思是,为什么编译器无法识别班级a中的example1?为什么我们应该指定example2<T>::a而不只是a

由于

0 个答案:

没有答案