У меня проблема, я думаю очень конкретная.виртуальные методы и классы шаблонов
У меня есть 2 классов, а B aseclass и D erived класс (от B aseclass). Б представляет собой шаблон класса (или шаблон класса) и имеет чистый виртуальный методvirtual void work(const T &dummy) = 0;
D erived класс, как предполагается, переописать это, но, как D является производным от B, а не D Будучи еще одним классом шаблона, компилятор плюет на меня, что виртуальные функции и шаблоны не работают сразу.
Любые идеи, как выполнить то, что я хочу?
Я благодарностью за любые мысли и идеи, особенно если вы Allready разработали эту проблему
этот класс фиксируется иначе как есть, я не могу изменить это, не нарушая существующего кода базы
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 */ }
..
};
Edit: компилятор говорит мне, что void B<T>::work(const T&)
[with T = int*]
является чистый виртуальный в пределах D
Читать здесь, почему она до сих пор не работает для меня (как пытался это с классами Qt), Qt дизайн недостаток ... http://lists.trolltech.com/qt-interest/2006 -02/thread00693-0.html – drahnr
и см. Здесь http://doc.trolltech.com/qq/qq15-academic.html , в конце концов, я должен использовать старые злые void * вместо шаблонов ... – drahnr