指定一个 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 到此条目)
当使用 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 到此条目)