首页 > 解决方案 > C++ 模板继承可见性在派生类中丢失

问题描述

我正在为一个非常简单的模板设计而苦苦挣扎:

template <typename T>
class A {
public:
    int i=4;
};

template <typename T>
class B : public  A<T> {
public:
    int f() {return i;}
};

编译器说 i 没有在 B 的范围内声明,我可以通过前缀 A 来解决它:

int f() {return A<T>::i;}

但是,由于这是一个更通用设计的摘录,我想了解这个问题:B<T>作为A<T>父亲,我应该可以在没有前缀的情况下访问吗?

我认为这一定是一个微不足道的问题,但我看不到解决方案。

标签: c++templatesinheritance

解决方案


推荐阅读