c++ - 如何从基类中暴露隐藏的重载?

标签 c++ inheritance overloading hidden

给定这段代码:

class base {
public:
  string foo() const; // Want this to be visible in 'derived' class.
}

class derived : public base {
public:
  virtual int foo(int) const; // Causes base class foo() to be hidden.
}

如何使 base::foo() 对派生可见而不用调用基类的虚拟方法重载来复制它? using 是否可以解决问题,如果可以,它去哪里了,是这样的吗?

class derived : public base {
public:
  virtual int foo(int) const;
  using base::foo;
}

最佳答案

很抱歉回答很短,但是是的。就是这样,做你想做的事:

class derived : public base {
public:
  virtual int foo(int) const;
  using base::foo;
};

另请注意,即使不使用,您也可以访问该基地:

derived x;
string str = x.base::foo(); // works without using

关于c++ - 如何从基类中暴露隐藏的重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011552/

相关文章:

c# - Fluent NHibernate Joined-Subclass 问题

c++ - 具有非模板类型参数的模板函数的重载解析

c++ - 在 C++ 结构中重载运算符 << 和 >>

c++ - 使用 ptr_vector 时访问派生类的方法

C++比较字符串数组元素

C++继承不继承祖父文件

c++ - 从 'int' 到非标量类型赋值运算符的转换 - object 到 int

c++ - 我可以依赖无序 map 的顺序吗?

c++ - netbeans 中的 C++ 入门

c++ - 将指针或引用传递给派生类,以便调用基类方法