我有一个带有两个函数的基类:第一个调用第二个函数:
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()函数,那么一切都按照需要进行。
这是什么原因?我继承但是我必须重写公共代码而且我不太喜欢那样:(
谢谢!
答案 0 :(得分:3)
您可能尚未在基类中声明函数virtual
;只能覆盖虚函数:
virtual void specificInitialization();
^^^^^^^
当然,您发布的代码不包含virtual
;但它也缺少类键和返回值,因此不能是您正在编译和运行的代码。我只能猜出你的真实代码是什么样的。