指定一个 in-class using 声明以同名的不同函数为目标

Specifying an in-class using-declaration targeting different functions with the same name

当使用 using 声明公开基础 class 方法时,我该如何公开具有相同名称但不同参数的方法?

class Base
{
protected:
    void f();
    void f(int);
};

class Derived: public Base
{
    using Base::f; // which is exposed, and how can I manually specify?
};

这样,基础 class 中的所有方法都将被公开,如果您只想使用派生 class 中的特定方法,则需要使用 forwarding function

class Base{
  protected:
  void f();
  void f(int);
};

class Derived: public Base
{
 public:
  void f()    //forwarding function
  {
    Base::f();
  }
};

有关此方法的更多说明,您可以阅读 Scott Meyers 的第一本书,一个专门用于避免隐藏继承名称的条目(link 到此条目)