我目前正在处理的一个类有一个定义各种函数的类型的成员。由于各种原因,我的类应该是这种类型的包装器(例如,使其成为线程安全的)。无论如何,一些类型的函数可以通过,如下所示:
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
答案 0 :(得分:6)
从您的基类私下继承并使用using
关键字公开接口的子集:
class MyClass : private WrappedType
{
public:
using WrappedType::clear;
};