0
#include<iostream>
using namespace std;
class C
{
public:
C(){};
virtual void nothing()=0;
virtual ~C(){};
};
class A : public C
{
public:
A(){};
virtual void nothing(){};
};
class B:public A
{
public:
B(){};
void nothing(){};
};
template <class T>
void hi(T){
cout << " i am something\n";
}
template <>
void hi<A>(A)
{
cout << " I am A\n";
}
template <>
void hi<B>(B)
{
cout << " I am B\n";
}
int main ()
{
C *array [] = {new A,new B};
hi (*array [0]);
hi (*array [1]);
delete array [0];
delete array [1];
return 0;
}
日期: 我有事 我有事繼承與模板
目前我正在寫有處理
繼承類型和專門的模板程序。在上面的例子中,我想我想看到 我是A 我是B 有沒有辦法正確調用對象的函數,雖然我正在處理基類數組?我不確定通過dynamic_cast進行類型檢查和轉換是最優雅的解決方案。請注意,這只是一個較大程序的摘錄。 謝謝您提前
您試圖多態使用您的對象,但模板實例化發生在編譯時。正如您所建議的,您需要運行時類型檢查。 – 2015-02-17 23:58:51