Zdravím, aktuálně řeším problém s generickou strukturou která reprezentuje čtyř-rozměrný vektor.
struct Vector4D<T>
{
public T v1;
public T v2;
public T v3;
public T v4;
//...
//nasobeni vektoru cislem
public static Vector4D<T> operator *(Vector4D<T> a, T b)
{
a.v1 *= b;
a.v2 *= b;
a.v3 *= b;
a.v4 *= b;
return a;
}
}
Problém spočívá v tom že struktura nedává smysl pokud není T číselný datový typ(Int32, Double, Single, Int64,...). Proto bych se chtěl zeptat, jestli tu není nějáký způsob, jakým mohu omezit T aby nenabývalo datového typu mimo číselných datových typů. Vím že se této funkčnosti dálo dosáhnout pomocí klíčového slova where ale už si nepamatuju jak. Dále mě napadlo použít statický konstruktor ale to by neřešilo to, že na T nemohu použít operátor * a tak dále. Děkuji za každou radu. Honza.
|