我想知道如果我可以檢查是否T型在我的通用繼承某個類/模板化方法。我可以在C#中使用'where'輕鬆完成此操作。例如,在我的遊戲引擎中,我有一個通用管理器的概念,它是一個XNA組件。它有一個可繪製對象的列表(可能是實體,粒子等)。所以我的類定義是這樣的:
public class LayerableDrawableGenericManager<T> : Microsoft.Xna.Framework.DrawableGameComponent where T : Drawable
所以我們只能有可借鑑的對象(即繼承繪製的對象)的通用管理。我們需要確定這一點,因爲在我的通用管理器中,我在所有這些T型對象上調用了Draw()
。如果不確保T型對象繼承Drawable類(其中包含Draw()
方法),我將無法繪製我的對象。
無論如何,想知道這是如何在C++中完成的。我搜索了諸如「Where C++」和「Where keyword C++」之類的東西,並且我所有的結果都是「我可以在哪裏學習C++」等東西。
有一些技巧允許這樣做,但通常它只是在沒有它的情況下工作,因爲如果調用draw方法且T沒有調用方法,則會發生編譯錯誤。主要的缺點是錯誤信息不夠清晰。 – 2012-03-22 00:19:45
您搜索了'where'我搜索了'C++模板類型參數約束'看到我將它顯示爲重複的問題。 – 2012-03-22 00:19:47
C++在這方面實際上是*結構類型*而不是* nominatively-typed *只是替換T,並且如果它編譯的話,萬歲! – 2012-03-22 00:22:01