我需要編寫一個模板,它根據模板參數是否是某個類的實例來生成一些代碼。可以爲所有類生成模板,但只有在該類是其他類的代碼應該執行的子類時纔可以生成該模板。在沒有類實例的情況下在C++模板中檢查類
問題是,應該實現的函數沒有收到類的任何實例,所以唯一已知的是類名。所以這是不可能的dynamic_cast實現這一目標,因爲它要求的對象
template<T>
class A
{
void somefunction(void)
{
if (T instanceof Foo) then ...
else ...
}
}
的情況下增加了一些解釋
class X: public Foo {};
class Y {};
class A<X> {} // special logic is generated
class A<Y> {} // special logic is NOT generated
如果你需要在模板實例美孚特殊行爲,我Ť嗨,你不需要一個模板類,你需要一個模板方法模式... ...# –
@Miguel天使:他只需要**它,如果他需要運行時多態性。 –