при доступе к нечто () "основы" с помощью объекта производного класса.
#include <iostream>
class base
{
public:
void foo()
{
std::cout<<"\nHello from foo\n";
}
};
class derived : public base
{
public:
void foo(int k)
{
std::cout<<"\nHello from foo with value = "<<k<<"\n";
}
};
int main()
{
derived d;
d.foo();//error:no matching for derived::foo()
d.foo(10);
}
как получить доступ к методу базового класса, имеющему метод того же имени в производном классе. сгенерированную ошибку показали. я приношу извинения, если я не ясен, но я чувствую, что ясно выразился как вода.заранее спасибо.
Вы могли бы добавить using base::foo
в ваш производный класс:
class derived : public base
{
public:
using base::foo;
void foo(int k)
{
std::cout<<"\nHello from foo with value = "<<k<<"\n";
}
};
Редактировать: Ответ на этот вопрос объясняет, почему ваш base::foo()
нельзя напрямую использовать из derived
без объявления using
.
Добавьте следующее утверждение в ваш производный класс:
using Base::foo ;
Это должно служить цели.
Когда у вас есть функция в производном классе, которая имеет то же имя, что и одна из функций в базовом классе, все функции базового класса скрываются, и вы должны явно ввести их в область видимости вашего производного класса, как указано выше.