0
大家好我有this的例子。通常在這種情況下,我會使用訪問者模式。但由於某種原因,寫了Base
,DerivedA
,0 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;
}