首页 > 解决方案 > C++ 继承和相同的功能名称

问题描述

我有这种情况:

class A
{
  public:
    A();
    virtual ~A();
    void doSomething();
};


class B : public A
{
  public:
    B();
    void doSomething(int parameter);
};

如果我执行以下操作:

int main()
{
  B b;
  b.doSomething();
}

它给了我一个编译错误(没有匹配的功能)。如何在不更改B函数名称的情况下解决这个问题?B派生自A所以它也doSomething()有无参数的功能。为什么它不起作用?谢谢您的帮助。

标签: c++polymorphism

解决方案


目前,B::doSomething 隐藏 A::doSomething.

您可以使用using来解决您的问题:

class B : public A
{
  public:
    using A::doSomething;
    B();
    void doSomething(int parameter);
};

推荐阅读