为什么成员访问需要具有模板固有类的资格

时间:2018-08-29 12:56:10

标签: c++ templates inheritance

考虑以下示例:

#include <cstdio>
template <typename T> class ABase
{
    void SetA(const T& aA)
    {
        mA = aA;
    }

protected:
    T mA;
};

template <typename T> class A : public ABase<T>
{
public:

    inline const T& GetA() const
    {
        printf("A<T>::GetA() called\n");
        return ABase<T>::mA;
        //return mA; // does not work.
    }
};

对于普通的继承类,我可以像访问其他任何类变量一样简单地访问mA。对于此示例,唯一起作用的是ABase<T>::mA。尝试访问mA会产生编译错误。

error: use of undeclared identifier 'mA'
        return mA;   

我正在努力理解为什么需要此ABase<T>::mA

0 个答案:

没有答案