模板子类可以通过this指针来找到直接模板父类的成员,但是无法通过this指针来找到更之前的父类的成员变量和函数,
例如有模板基类A,模板类B公共继承于A,模板类C公共继承于B。C无法可以通过this指针来找到B的成员函数和变量,但无法找到A的。
有没有厉害的仁帮忙指导一下,如何将解决
冠以类名即可,例如:
template <typename T>
class A
{
public:
void foo() {}
};
template <typename T>
class B : public A<T>
{
public:
void foo() {}
};
template <typename T>
class C : public B<T>
{
public:
void bar()
{
this->foo(); // B::foo()
this->B<T>::foo(); // B::foo()
this->A<T>::foo(); // A::foo()
}
};
int main()
{
C<void> c;
c.foo(); // B::foo()
c.B<void>::foo(); // B::foo()
c.A<void>::foo(); // A::foo()
c.bar();
return 0;
}