2012-05-18 84 views
2

我想要做這樣的事情,但我不確定是否有可能。我無法在Google上找到任何信息。如果不知道模板類型,是否可以指向模板類?

template <typename T> 
class Container { 
public: 
    T *ptr; 
}; 

class Other { 
private: 
    Container *container_ref; 
} 

感謝您的幫助。

+0

這聽起來像你真正想要的是運行時多態,而不是有時稱爲編譯時多態的模板。 –

+0

當然!將「其他」設爲模板。 –

回答

5

這不是,但如果你負責Container那麼你可以使它從非模板化的基類繼承,並保持一個指針。

+0

而實際上'shared_ptr'的實現是爲了跟蹤你分配的東西的類型,以便稍後可以進行非多態刪除。 –

2

不是。模板不是類,它是如何構建類的說明。沒有模板參數(無論是顯式的還是暗示的)它都不完整。

你可以看看Boost::any尋找解決問題的辦法。

+1

有一個原因,人們堅持把它稱爲類*模板*而不是模板*類* :)它確實是一個模板,而不是一個類! –

相關問題