提问人:Heisenbug 提问时间:5/20/2022 最后编辑:Heisenbug 更新时间:5/20/2022 访问量:47
简化使用基模板类语句
simplify using base template class statement
问:
通常,在派生的模板类中,我需要引用基来访问成员。我最终编写了这样的代码:
template<typename A>
struct BaseClass
{
};
template<typename B>
struct Derived : public BaseClass<int>
{
using Base = BaseClass<int>;
};
对于具有大量模板参数的大量类,这变得更加冗长且更难维护。
在这种情况下,有没有更简洁的方法来导入基本符号?
答:
0赞
Artyer
5/20/2022
#1
如果本身不是模板类:您可以简单地使用(继承的 injected-class-name):Derived
BaseClass
struct Derived : public BaseClass<int>
{
void f()
{
BaseClass::f();
}
};
如果它也是一个模板,可能是最好的方法。using Base = BaseClass<int>;
评论
0赞
Heisenbug
5/20/2022
就我而言,Derived 也是一个模板类。而且我有一个更深层次的等级制度。我将改进这个例子。
1赞
Fareanor
5/20/2022
#2
我认为您可以以另一种方式做事,即将基本解析推迟到基类,以便它会自动解析为任何新的派生类,而无需为每个类重写它。
像这样:
template <typename A>
struct BaseClass
{
using Base = BaseClass<A>;
};
template <typename B>
struct Derived : public BaseClass<int>
{};
评论