1
public class Matrix<T>
{
T[][] values;
...
}
我想添加一個+
運營商,將處理的int,long,float和double或任何其他類型的+
運營商對於T已實施。
例如(這不工作,但傳達什麼,我想做的事情):
public class Matrix<T>
{
T[][] values;
...
public static Matrix<T> operator +(Matrix<T> A, Matrix<T> B)
{
values = ...;
for (int row = 0; row < rowCount; ++row)
{
for (int col = 0; col < colCount; ++col)
{
values[row][col] = A.values[row][col] + B.values[row][col];
}
}
}
}
理想我會想辦法限制噸至只有那些定義爲得到一個編譯時的+
操作類型錯誤,但是運行時異常會失敗。 另外我想添加隱式轉換,然後從Matrix<float>
到Matrix<double>
但這些不能在Matrix<T>
類中定義,無論如何圍繞這個? 我知道T4模板可以用來爲每種類型生成一個矩陣,但是這些類型需要事先指定,我希望這可以用於定義運算符的任何類型。
不幸的是,像其他任何靜態函數一樣,不能在泛型類中調用重載運算符。恐怕T4將是你最好的選擇。 – Gabe