代码之家  ›  专栏  ›  技术社区  ›  KorbenDose

如何避免传递函数

  •  2
  • KorbenDose  · 技术社区  · 6 年前

    我正在处理的类有一个定义各种函数的某种类型的成员。出于各种原因(例如,使其线程安全),我的类应该是这种类型的包装器。无论如何,某些类型的函数可以直接传递,如下所示:

    class MyClass {
      // ... some functions to work with member_
    
      /* Pass through clear() function of member_ */
      void clear() {
        member_.clear()
      }
    
    private:
      WrappedType member_;
    };
    

    这还不错,而且我还可以很容易地将更多的功能添加到 MyClass::clear() 以防我需要。不过,如果我有几个传递函数,它就会膨胀 MyClass 对我来说,读起来更难。

    所以我想知道是否有一种很好的单行方式(除了把上层定义写进一行之外)可以通过 WrappedType 的成员函数,非常像 making base class members available :

    /* Pass through clear() in an easier and cleaner way */
    using clear = member_.clear; // Unfortunately, this obviously doesn't compile
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   Vittorio Romeo    6 年前

    从基类私有继承并公开接口的一个子集 using 关键词:

    class MyClass : private WrappedType 
    {
    public:
        using WrappedType::clear; 
    };