Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Наследование классов, перегрузка функции


Автор: Нитонисе 15.5.2013, 11:45
Что-то не разберусь, как правильно реализовать наследование.
Код

class A
{
    public:
        void FuncA()
        {
             FuncB();
        }
        void FuncB(){};
};

class B : public A
{
    public:
        void FuncB(){};
}

// применение

B b;
b.FuncA();


Мне бы хотелось, чтобы функция FuncA работала с функцией FuncB производного класса, а не базового, как это получается на самом деле. Как это сделать?

Автор: math64 15.5.2013, 12:25
Нужно объявить FuncB виртуальной:
Код

class A
{
    public:
        void FuncA()
        {
             FuncB();
        }
        virtual void FuncB(){};
};

Автор: Нитонисе 15.5.2013, 12:29
Цитата(math64 @  15.5.2013,  12:25 Найти цитируемый пост)
Нужно объявить FuncB виртуальной:

Я пробовал, компилятор ругается почему-то...
Код

[BCC32 Error] class_A.cpp(238): E2092 Storage class 'virtual' is not allowed here


Добавлено через 1 минуту и 47 секунд
Ааа, понял в чем дело, это я дал объявление virtual и в h-файле и в cpp-файле. Убрал из cpp-файла - все стало как надо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)