如何避免传递函数

时间:2018-06-05 11:37:46

标签: c++ wrapper

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

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 个答案:

答案 0 :(得分:6)

从您的基类私下继承并使用using关键字公开接口的子集:

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