整个母班的进口范围

时间:2018-07-15 11:45:53

标签: c++ scope using

在我的特定问题中,有一个依赖类的继承,即:

template<typename type>
struct Base{
    int a;
}
template<typename type>
struct Derived: Base<type>{
    void func(int b){
        Base<type>::a = b
    }
}

在此示例中,我必须使用Base<type>::a来访问变量,因为Base<type>依赖于模板参数type。但这很烦人,每次我们都要添加前缀Base<type>::

另一种解决方法是:

template<typename type>
struct Derived: Base<type>{
    using Base<type>::a;
    void func(int b){
        a = b
    }
}

但是,它仍然很烦人,因为我们必须重复使用的每个数据成员。有没有办法将母类的整个范围导入其派生类?

1 个答案:

答案 0 :(得分:2)

您可以使用this来避免指定完整的基类范围

void func(int b){
    this->a = b;
}

此类型的键入较少,并且在将来进行重命名和重构时更易于处理。

查看有效的example


您可以实现的最短前缀是三个字母:

template<typename type>
struct Derived: Base<type>{
    using B = Base<type>;
    void func(int b){
        B::a = b;
    }
};