导入整个母类的范围

Importing scope of a whole mother class

本文关键字:范围 导入      更新时间:2023-10-16

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

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
}
}

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

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

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

这将不太容易键入,并且在将来进行重命名和重构时更容易处理。

请参阅工作示例。


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

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