Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Шаблоны, конструктор.

316
23 октября 2011 года
Alm3n
889 / / 29.05.2009
Доброго.
Есть класс вектор. У него три конструктора для int, float, double. Код в общем-то однообразный за исключением типа передаваемого массива в конструктор. Получилось не очень хорошо:
Код:
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;
        }

Можно как-нибудь прикрутить к конструктору шаблоны? Вообще, как сделать получше в этом случае? Дважды повторяющиеся case - вообще не вариант.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог