C ++ вызывает производный класс stati c функция в базовом классе non-stati c function - PullRequest
0 голосов
/ 15 января 2020

Я пишу на C ++ 11, и у меня есть большая родительская функция non-stati c, и я хочу повторно использовать ее в своем производном классе.

Родительская функция non-stati c использует функцию stati c, определенную сама по себе. Я перегрузил функцию stati c в своем производном классе и хочу, чтобы родительская функция non-stati c использовала функцию stati c производного класса. Но это не так и использует свою собственную версию. Был задан похожий вопрос , но он отличается от того, что он касается stati c, а также нестатических c членов класса . Например, см. Пример кода ниже:

#include <iostream>
class Base
{
    public:
    static int value() { return 0; }
    int getValue() { return value(); }
};
class Derived:public Base
{
    public:
    static int value() { return 1; }
};
int main()
{
    Derived obj;
    std::cout << obj.getValue() << std::endl;
    return 0;
}

Я хочу, чтобы код напечатал 1, но он печатает 0

Можно ли как-нибудь это сделать? Большое спасибо за помощь.

Обновление # 1

Для меня функция getValue() довольно большая, поэтому я и задал вопрос в первую очередь , Переопределение функции getValue() в производном классе, как это предлагается в комментариях, может быть осуществимым вариантом, но для меня это будет многократное копирование большой функции, поскольку у меня есть несколько производных классов, что усложнит внесение изменений в будущем. Вкратце,

Я хочу определить функцию non-stati c, publi c один раз в родительском классе, который использует член stati c класса, а затем повторно использовать функция non-stati c в каждом дочернем классе таким образом, что в случае перегрузки функции stati c родительского класса в дочернем классе функция non-stati c родительского класса использует перегруженную функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...