简化使用基模板类语句

simplify using base template class statement

提问人:Heisenbug 提问时间:5/20/2022 最后编辑:Heisenbug 更新时间:5/20/2022 访问量:47

问:

通常,在派生的模板类中,我需要引用基来访问成员。我最终编写了这样的代码:

template<typename A>
struct BaseClass
{
};

template<typename B>
struct Derived : public BaseClass<int>
{
  using Base = BaseClass<int>;
};

对于具有大量模板参数的大量类,这变得更加冗长且更难维护。

在这种情况下,有没有更简洁的方法来导入基本符号?

C++ 模板 using 指令

评论


答:

0赞 Artyer 5/20/2022 #1

如果本身不是模板类:您可以简单地使用(继承的 injected-class-name):DerivedBaseClass

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

现场示例