我试图覆盖C ++中的虚函数。在我覆盖该函数之后,它实际上并未覆盖它,因此使该类成为抽象类。 下面的代码将使您对问题有很好的了解。
正如您在下面看到的那样,该代码对于非指针模板(例如int)可以正常工作,但是由于有int指针而失败。
我认为也许是因为这是指向指针的问题,所以我在实现Derived2的过程中取出了&,但这并没有解决。
template<class T>
class Base {
virtual void doSomething(const T& t) = 0;
};
class Derived1: public Base<int>{
void doSomething(const int& t) {
} // works perfectly
};
class Derived2: public Base<int*>{
void doSomething(const int*& t) {
}
// apparently parent class function doSomething is still unimplemented, making Derived2 abstract???
};
int main(){
Derived1 d1;
Derived2 d2; // does not compile, "variable type 'Derived2' is an abstract class"
}