我有一個資產管理器爲一個簡單的D遊戲,我想做一個簡單的得到函數,以便得到!紋理(...)或get!Sound(...)將是一個選項。我是相當新的模板,當我試圖這樣沒有工作這麼好:如何在D中重新創建類似std.conv.to的東西? (...)
T get(T) (string p_name)
{
if (T is Texture)
return _textures[p_name];
else if (T is Sound)
return _sounds[p_name];
else if (...)
...
else
return null;
}
首先,這是因爲第一個return語句後沒有編譯,它似乎只接受退貨紋理。其次,我不是那些陳述清單的忠實粉絲 - 是否有更好的方式去做這件事?我知道std.conv.to管理它。
謝謝。你會想用靜若
正確的術語是「模板約束」,而不是「模板條款」,除非意味着什麼是「模板條款」不是模板上的'if'等,在哪種情況下我不知道你指的是什麼。 –
不是它的限制;我想不出名字 –
當我使用模板約束方法時,出現錯誤「無法在編譯時解釋紋理」。什麼會造成這種情況? – patrickjm