specificInitialization

specificInitialization

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

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()函数,一切将按预期进行。

这是什么原因呢?我正在继承,但是无论如何我都必须重写通用代码,而且我不太喜欢:(

谢谢!

最佳答案

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

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


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

08-04 00:54