Название: Маленький класс Отправлено: Igors от Октябрь 15, 2019, 14:46 Добрый день
Мелкая вещь, но как-то "не выплясывается". Есть большой класс и у него есть методы типа Код Параметр target должен нести инфу о том "что нужно менять", это 1) какую компоненту данных, их всего 2, т.е. первую, вторую или обе 2) какой диапазон данных менять, один из вариантов а) те данные что сейчас "выбраны" (selected) b) данные в заданном диапазоне времени double [timeStart..timeStop] c) данные в заданном диапазоне кадров int [frameStart..frameStop] Как бы Вы написали CModTarget? (название впрочем тоже неудачное). Всякая там крутизна с использованием новых стандартов - необязвтельно, но интересно. И еще - делать ли его глобальным или внутренним в MyBigClass ? Спасибо Название: Re: Маленький класс Отправлено: RedDog от Октябрь 15, 2019, 19:11 В виде патча, отдельным классом. Если есть опасность что его неправильно заюзают как отдельную сущность, то закрыть все методы, и зафрендить с "большим"
Название: Re: Маленький класс Отправлено: Igors от Октябрь 16, 2019, 10:36 Попробуем "вообще без класса". Вызов может выглядеть примерно так
Код Не очень красиво + требуется еще вариант для диапазона double. Тогда может лучше нахрюкать вариантов вызовов Код Ну тоже как-то не очень. Там есть и др параметры (вместо многоточия), если и они будут варьироваться.. Напрашивающийся способ: объявить CModTarget пассивной struct и аккуратно заполнять ее при каждом вызове. Нормально, но длинновато/громоздко. Хотелось бы как-то проскочить с implicit конструктором, напр Код Но "компоненту" некуда девать, придется оформлять ее еще параметром.. Название: Re: Маленький класс Отправлено: Авварон от Октябрь 16, 2019, 17:15 Код: [quote author=Igors link=topic=32530.msg240268#msg240268 date=1571211412] [/quote] Если параметры ктора разные, то можно просто юзать {} Код
Если вылезет ambigous overload (скажем, инт-дабл), то можно заюзать явный тэг (но это "некузяво") Код
Можно совместить подходы: Код [/code] Можно инвертировать (но зачем?): TIntRange{0, 10.0}->ModifyData(dst, ..., component_A); Вариантов на любой цвет и вкус, тут сложно дать какой-то совет "так-то лучше потому что", они все равноправны. Название: Re: Маленький класс Отправлено: Igors от Октябрь 17, 2019, 09:01 Вариантов на любой цвет и вкус, тут сложно дать какой-то совет "так-то лучше потому что", они все равноправны. Ну или "все имеют недостатки" (что одно и то же). Если вылезет ambigous overload (скажем, инт-дабл), то можно заюзать явный тэг (но это "некузяво") Здесь нет "компоненты" и не охватывается вариант 2a (selection). Собсно 2 (или даже 3) параметра - ничего страшного нет, но не хочется загрязнять глобальное пр-во имен. Т.е. IntTag, component_A - это кто такие? А если занести их в класс, то раздувается вызовКод
Код
Название: Re: Маленький класс Отправлено: Авварон от Октябрь 17, 2019, 11:36 Здесь нет "компоненты" и не охватывается вариант 2a (selection). Ну вы уже сами как-нибкдь додумайте 3й параметр=) Т.е. IntTag, component_A - это кто такие? А если занести их в класс, то раздувается вызов Если у вас есть ambigous вызов. Он у вас есть? Afaik, инт и дабл прекрасно резолвятся куда надо. |