■6623 / ) |
ジェネリックな行列クラスの算術演算 |
□投稿者/ yagiey (18回)-(2007/08/21(Tue) 00:06:53)
|
分類:[.NET 全般]
ジェネリックな行列クラスMatrix<T>を実装しようとしてます。 型引数(って言うのかな...。Tのことです)は行列の要素の型です。 つまり、Matrix<double>とやると要素がdoubleの行列ができます。
さて、この行列クラスに和や積などの演算を定義しようとして悩んでます。 Tそのままだと、Tに和や積が定義されていないのでコンパイラにこっぴどく叱られます。 んで、C#では型引数に制約がかけられるらしく、喜び勇んで使ってみました。 class Matrix<T> where T : IComparable<T>, IAddable<T>, IMultiplyable<T>, Iほげ, Iはげ { ... } てな感じです。いくつかのインターフェースは自前のものです。 しかし、Tがdoubleやintのとき、doubleやintは上記の「俺様インターフェース」を実装しないので使えんのです。
IAddable<T>やIMultiplyable<T>に相当する、intやdoubleも実装している.net framework標準のインターフェースなんてものはありませんか? IComparable<T>はあるのになぁ...。 そうでなくとも、何とかならんでしょうか?
# ってか、行列の要素にintやdouble以外はあんまし考えられんのかも知れませんが...
|
|