С++ наследование. Заменить базовый метод дочерним

Доброго дня суток господа, имеется проблема с пониманием / недопониманием процесс наследования и замены родительских методов на дочерние.

Имеется класс

class TcpServerClientUnit
{
private:
    void checkReadyData_();
    uint64_t dataAvailable_();
};

//Имеется дочерний класс
class wsServerClientUnit: public TcpServerClientUnit 
{
    uint64_t dataAvailable_();
} 
//Минимально воспроизводимый код.
#include <iostream>
using namespace std;

class parent{
private:
    void replacingMethod();
public:
    void callReplacingMethod();
};

class child: public parent{
private:
    void replacingMethod();
};

void parent::replacingMethod()
{
    std::cout<<"Its is parent!"<<std::endl;
}

void parent::callReplacingMethod()
{
    replacingMethod();
}

void child::replacingMethod()
{
    std::cout<<"I'm a child"<<std::endl;
}
int main()
{
    child Child;
    Child.callReplacingMethod();
    cout << "Hello world!" << endl;
    return 0;
}

Имеется задача предопределить метод родительского класса dataAvailable_() дочерним. Установка функции как виртуальной, и указание дочернему методу override не вызывает требуемого результата и все также вызывается экземпляр родительского класса.

Нужно: заменить родительский dataAvailable_() -> дочерним dataAvailable_() Благодарю за помощь.


Ответы (1 шт):

Автор решения: timur
class parent {
private:
    virtual void replacingMethod();
public:
    void callReplacingMethod();
};

class child : public parent {
private:
    virtual void replacingMethod() override;
};

//...

child Child;
Child.callReplacingMethod(); //=> I'm a child

virtual - очень важный момент, так как в методе callReplacingMethod this думает, что он (объект) родитель

→ Ссылка