我解决了一个问题,我认为是一个非常具体的问题。
我有 2 个类,一个 B seclass 和一个 D 派生类(来自 B aseclass)。
B 是一个模板类(或类模板)并且有一个纯虚方法 virtual void work(const T &dummy) = 0;
D 派生类应该重新实现这一点,但是因为 D 派生自 B 而不是 D 是另一个模板类,编译器向我吐槽虚函数和模板不能同时工作。
有什么想法可以实现我想要的吗?
我非常感谢任何想法和想法,特别是如果你已经解决了那个问题
这个类是按原样固定的,我不能在不破坏现有代码库的情况下编辑它
template <typename T>
class B {
public:
...
virtual void work(const T &dummy) = 0;
..
};
以int*为例
class D : public B<int*>{
...
virtual void work(const int* &dummy){ /* put work code here */ }
..
};
编辑:编译器告诉我,void B<T>::work(const T&)
[with T = int*]
在 D
最佳答案
你把 const 放在了错误的地方。尝试
virtual void work(int* const &dummy){ /* put work code here */ }
const int*
与 int const*
相同,即它将 const 与 int 而不是指针相关联。
关于c++ - 虚拟方法和模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531063/