我有一个具有两个函数的基类:第一个调用第二个:
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
;但它也缺少类键和返回值,因此不能成为您正在编译和运行的代码。我只能猜测您的真实代码是什么样子。