【发布时间】:2011-02-01 15:07:09
【问题描述】:
我解决了一个问题,我认为是一个非常具体的问题。
我有 2 个类,一个 B aseclass 和一个 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
【问题讨论】:
-
在这里阅读为什么它仍然对我不起作用(正如在 Qt 类中尝试过的那样),Qt 设计缺点...lists.trolltech.com/qt-interest/2006-02/thread00693-0.html
-
看看这里doc.trolltech.com/qq/qq15-academic.html 最后我不得不使用旧的邪恶 void* 而不是模板......