虚方法和模板类

dra*_*hnr 5 c++ virtual templates

我遇到了一个问题,我认为这是一个非常具体的问题.

我有2个班,一个B aseclass和一个D erived类(来自B aseclass). 是一个模板类(或类模板),并具有一个纯虚拟方法 virtual void work(const T &dummy) = 0;d erived类应该重新实现这一点,但由于d是衍生自 而非d是另一个模板类时,编译器吐出在我,虚函数和模板不能立即工作.

任何想法如何实现我想要的?

我感谢任何想法和想法,特别是如果你已经解决了这个问题

这个类也是固定的,我不能在不破坏现有代码库的情况下编辑它

template <typename T>
class B {
public:
...
virtual void work(const T &dummy) = 0;
..
};
Run Code Online (Sandbox Code Playgroud)

以int*为例

class D : public B<int*>{
...
virtual void work(const int* &dummy){ /* put work code here */ }
..
};
Run Code Online (Sandbox Code Playgroud)

编辑:编译器告诉我,那void B<T>::work(const T&) [with T = int*]纯虚d

Rüd*_*nke 9

你把const放在了错误的地方.尝试

virtual void work(int* const &dummy){ /* put work code here */ }
Run Code Online (Sandbox Code Playgroud)

const int*是相同的int const*,即它将const与int相关联而不是指针.