Доступ к базовому классу FN с той же подписью из производного объекта класса

StackOverflow https://stackoverflow.com/questions/1298750

  •  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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top