Доступ к базовому классу FN с той же подписью из производного объекта класса
-
18-09-2019 - |
Вопрос
Можно ли получить доступ к функции базового класса, которая имеет ту же подпись, что и функция полученного класса с использованием производного объекта класса?. Вот образец того, что я заявляю ниже ..
class base1 {
public:
void test()
{cout<<"base1"<<endl;};
};
class der1 : public base1 {
public:
void test()
{cout<<"der1"<<endl;};
};
int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
Решение
Вам необходимо полностью подготовить имя метода, поскольку оно противоречит унаследованной.
Используйте obj.base1 :: test ()
Другие советы
Вы не можете переопределить метод в производном классе, если вы не предоставили виртуальное ключевое слово.
class base1
{
public:
void test()
{
cout << "base1" << endl;
};
};
class der1 : public base1
{
public:
void test()
{
cout << "der1" << endl;
};
};
int main()
{
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
Таким образом, приведенный выше код неверен. Вы должны дать:
virtual void test();
в вашем базовом классе
Вы можете использовать это:
((base)obj).test();
Не связан с StackOverflow