基类非静态函数中的C ++调用派生类静态函数

时间:2020-01-15 08:04:25

标签: c++11 object inheritance static-methods non-static

我正在用C ++ 11编写代码,并且有一个很大的父级非静态函数,我想在派生类中重用它。

父级非静态函数使用本身定义的静态函数。我在派生类中重载了静态函数,并且希望父级非静态函数使用派生类的静态函数。但是它没有,并且使用自己的版本。有人问A similar question,但这在处理静态类和非静态成员的意义上是不同的。例如,请参见下面的示例代码:

#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()函数可能是一个可行的选择,但对我来说,它将多次复制一个大函数,因为我有多个派生类,这将使操作变得很麻烦在未来做出改变。简短地说,

我想在使用该类的静态成员的父类中一次定义一个非静态的公共函数,然后在每个子类中重用该非静态的函数,以防万一我在子类中重载了父类的静态函数,父类的非静态函数使用了重载函数。

0 个答案:

没有答案