c++ - 虚拟方法和模板类

标签 c++ templates virtual

我解决了一个问题,我认为是一个非常具体的问题。

我有 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/

相关文章:

PHP 模板方法 <?=$var?>?

c++ - Variadic 模板 - 如何创建存储传递参数的类型

c++ - C++ VIRTUAL 函数如何不冗余?

c++ - 派生类构造函数可以继承c++中的基类构造函数吗?

c++ - 在 C++ 中删除部分文件的最快方法

python - Python 后续中的 SWIG 枚举创建

c++ - 有没有办法在提供左值和右值重载的同时删除重复代码?

c++ - 从容器创建一系列索引的最惯用的方法是什么?

css - 模板不加载静态文件

c++ - 如果类使用虚拟继承,为什么对象大小会增加?