這個article描述了一種在C#中的方式,允許添加任何具有爲其定義的+操作符的值類型。從本質上講,它允許下面的代碼:任意值類型的操作
public T Add(T val1, T val2)
{
return val1 + val2;
}
此代碼不能編譯,因爲沒有保證的T型具有的「+」操作符的定義,但效果與代碼實現這樣的:
public T Add(T val1, T val2)
{
//Num<T> defines a '+' operation which returns a value of type T
return (new Num<T>(val1) + new Num<T>(val2));
}
請點擊鏈接查看Num類如何實現此目的。無論如何,在這個問題上。有什麼方法可以在C或C++中實現相同的效果?對於好奇心,我試圖解決的問題是允許CUDA內核更靈活/通用,因爲它允許它在更多類型上運行。
更新:對於.NET,Marc Gravell製作了一個utility library,它非常優雅地解決了操作員問題。
值得注意的是,這種方式與C++模板的工作方式已被命名爲「鴨子打字」的類型。基本上,你可以根據自己實際需要的類型進行選擇,而改爲說'需要支持X,Y等方法和操作'。它也被用作ruby中的主要類型機制。 – workmad3 2008-10-21 14:15:59