Hello all у меня есть this пример. Обычно в этом случае я бы использовал шаблон посетителя. Однако по какой-то причине человек, который написал Base
, DerivedA
, DerivedB
предпочитает dynamic_cast
s. Имейте в виду, что я не могу изменить Base
, DerivedA
, DerivedB
классы. У меня есть кастинг с частичной специализацией. Пожалуйста, дайте мне знать, если это хорошее решение или есть лучший вариант?Консультация по частичной специализации
#include <iostream>
using namespace std;
class CBase{};
class CDerivedA: public CBase{};
class CDerivedB : public CBase{};
class CDerivedC : public CBase{};
template <typename T>
void Draw(T* face)
{
cout<<"Base"<<endl;
}
template <>
void Draw<>(CDerivedA* face)
{
cout<<"A"<<endl;
}
template <>
void Draw<>(CDerivedB* face)
{
cout<<"B"<<endl;
}
int main() {
CDerivedA* a = new CDerivedA();
CDerivedB* b = new CDerivedB();
CDerivedC* c = new CDerivedC();
Draw(a);
Draw(b);
Draw(c);
return 0;
}