public Vector(int[] InitDataiv) : this(InitDataiv, null, null, 0) { }
public Vector(float[] InitDatafv) : this(null, InitDatafv, null, 1) { }
public Vector(double[] InitDatadv) : this(null, null, InitDatadv, 2) { }
private Vector(int[] InitDataiv, float[] InitDatafv, double[] InitDatadv, uint mode)
{
uint i = 0;
int InitDataSize = 0;
switch (mode)
{
case 0:
InitDataSize = InitDataiv.Length;
break;
case 1:
InitDataSize = InitDatafv.Length;
break;
case 2:
InitDataSize = InitDatadv.Length;
break;
}
if (InitDataSize < 1) { bEmpty = true; return; }
Data = new double[InitDataSize];
switch (mode)
{
case 0:
for (i = 0; i < InitDataSize; ++i)
Data = Convert.ToDouble(InitDataiv);
break;
case 1:
for (i = 0; i < InitDataSize; ++i)
Data = Convert.ToDouble(InitDatafv);
break;
case 2:
for (i = 0; i < InitDataSize; ++i)
Data = InitDatadv;
break;
}
bEmpty = false;
}
Шаблоны, конструктор.
Есть класс вектор. У него три конструктора для int, float, double. Код в общем-то однообразный за исключением типа передаваемого массива в конструктор. Получилось не очень хорошо:
Код:
Можно как-нибудь прикрутить к конструктору шаблоны? Вообще, как сделать получше в этом случае? Дважды повторяющиеся case - вообще не вариант.