考虑以下示例:
#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
。