在继承中没有正确调用的类方法

时间:2014-03-03 12:41:02

标签: c++ templates inheritance

我有一个带有两个函数的基类:第一个调用第二个函数:

template <class T, size_t s> class BaseClass {
    /*....*/
    void init() {
        /*Do general initialization.*/
        specificInitialization();
    }

    void specificInitialization() {
        /*Do BaseClass specific initialization.*/
    }


};

在我的派生类中,我想做以下事情:

template <class T, size_t s> class DerivedClass : public BaseClass<T,s> {
    /*....*/
    void specificInitialization() {
        /*Do DerivedClass specific initialization.*/
    }
};

但是,在实现DerivedClass时,将调用BaseClass特定的初始化。如果我也在DerivedClass中编写init()函数,那么一切都按照需要进行。

这是什么原因?我继承但是我必须重写公共代码而且我不太喜欢那样:(

谢谢!

1 个答案:

答案 0 :(得分:3)

您可能尚未在基类中声明函数virtual;只能覆盖虚函数:

virtual void specificInitialization();
^^^^^^^

当然,您发布的代码不包含virtual;但它也缺少类键和返回值,因此不能是您正在编译和运行的代码。我只能猜出你的真实代码是什么样的。