-
- «Самую кипучую деятельность развивают чайники.» :)) => USSR(38 знак., 07.01.2012 15:41, )
- Новая беда. В двух разных enum нельзя объявить одинаковый элемент. Как обойти? Скрипач(970 знак., 06.01.2012 16:15 - 16:17)
- Еще одна фигня. Скрипач(284 знак., 07.01.2012 00:36)
- Прототипы-то разные. Кстати, я бы сделал членом strict operator* (T right) const; (реализует strict * T) и отдельно никаким не френдом вообще inline strict operator* (T left, strict right) { return right * left; } - как-то виднее, что второй =ReAl=(36 знак., 07.01.2012 00:49, )
- И ждут вас там грабли :) Описывать-то такой inline нужно вне блока class,правильно? И как быть с подстановкой типа? Для каждого отдельно? :))) - Скрипач(07.01.2012 00:52)
- Не нужно искать грабли там где их нет diper(391 знак., 07.01.2012 01:00)
- А теперь пишем описание класса с подстановкой и думаем. - Скрипач(07.01.2012 01:04)
- Ня diper(356 знак., 07.01.2012 02:05)
- Спасибо. А почему тогда не проходит во это: Скрипач(739 знак., 07.01.2012 13:00 - 13:09)
- Во вторых накой ей параметр, пусть свое значение выдает. diper(226 знак., 07.01.2012 16:57)
- Во первых функцию можно сделать методом diper(256 знак., 07.01.2012 16:55)
- Уже обсуждали. VAL(a+b) - Скрипач(07.01.2012 17:07)
- А вот так не нравится? (a+b).VAL() - diper(07.01.2012 17:11)
- Уже обсуждали. VAL(a+b) - Скрипач(07.01.2012 17:07)
- Ну тот шаблонизированный оператор — не friend, его в класс вписывать не нужно. А тут... ReAl(2226 знак., 07.01.2012 14:06)
- История из жизни вспомнилась. Скрипач(546 знак., 07.01.2012 14:29 - 14:32)
- И еще меня заставляют учить Си. Да я посмотрел тут примеры: t, b и вы все мне заясняете про волшебные числа и асм-отстой. Да асм проще некуда. Все понятно. Все действия прозрачны. Если пишут на нем понятно... - mazur(07.01.2012 20:30)
- Чем выше уровень программиста, тем ниже уровень на котором он программирует :> - Snaky(08.01.2012 03:32)
- Господь Бог таки программист?! ФК0 прав?! - T.Дocтoeвcкий(08.01.2012 04:02, ссылка)
- Это не Си. И это не примеры. Это мозговой штурм. Зацепили, кстати, вещи весьма нетривиальные. - Скрипач(07.01.2012 20:57)
- Чем выше уровень программиста, тем ниже уровень на котором он программирует :> - Snaky(08.01.2012 03:32)
- И еще меня заставляют учить Си. Да я посмотрел тут примеры: t, b и вы все мне заясняете про волшебные числа и асм-отстой. Да асм проще некуда. Все понятно. Все действия прозрачны. Если пишут на нем понятно... - mazur(07.01.2012 20:30)
- История из жизни вспомнилась. Скрипач(546 знак., 07.01.2012 14:29 - 14:32)
- Спасибо. А почему тогда не проходит во это: Скрипач(739 знак., 07.01.2012 13:00 - 13:09)
- Ня diper(356 знак., 07.01.2012 02:05)
- А теперь пишем описание класса с подстановкой и думаем. - Скрипач(07.01.2012 01:04)
- Не нужно искать грабли там где их нет diper(391 знак., 07.01.2012 01:00)
- И ждут вас там грабли :) Описывать-то такой inline нужно вне блока class,правильно? И как быть с подстановкой типа? Для каждого отдельно? :))) - Скрипач(07.01.2012 00:52)
- Прототипы-то разные. Кстати, я бы сделал членом strict operator* (T right) const; (реализует strict * T) и отдельно никаким не френдом вообще inline strict operator* (T left, strict right) { return right * left; } - как-то виднее, что второй =ReAl=(36 знак., 07.01.2012 00:49, )
- Кстати, внутри класса для одного класса не обязательно friend с аргументом, достаточно T RAW_VALUE() const { return val; } и вызывать x.RAW_VALUE(). Даже если так, как сейчас — добавть в аргумент RAW_VALUE(const strict a), чтобы можно было к =ReAl=(32 знак., 06.01.2012 22:16, )
- Затолкать все в один enum - diper(06.01.2012 16:34)
- Нелізэ :) Основных типов будет полтора десятка. Вариантов от двух то двадцати. А добавить потом что-то... - Скрипач(06.01.2012 16:43)
- В чем проблема добавить? Названия то разные. - diper(06.01.2012 21:02)
- Думай не как писать, а как ЧИТАТЬ. - Скрипач(06.01.2012 21:12)
- В чем проблема добавить? Названия то разные. - diper(06.01.2012 21:02)
- Нелізэ :) Основных типов будет полтора десятка. Вариантов от двух то двадцати. А добавить потом что-то... - Скрипач(06.01.2012 16:43)
- namespace спасет - Snaky(06.01.2012 16:29, ссылка)
- На самом деле это всё (с операторами и т.п.) -- плохая идея. Keep it simple, Stupid! ООП подход не единственно верный и в ООП легко закопаться слишком глубоко. - fk0(06.01.2012 16:23)
- Абсолютно с вами согласен, коллега :) Читайте начальное сообщение. Скрипач(48 знак., 06.01.2012 16:26)
- Смущает один момент - рано или поздно потребуются операции между разными строгими типами. Или хотя бы помножить на константу. Что делать тогда? - diper(06.01.2012 20:59)
- power_t operator * (const current_t& I, const voltage_t& U); объявляется другом для классов current_t и voltage_t и имеет доступ к внутренностям на чтение. Т.е. было бы желание, можно всю физику загнать. - =ReAl=(06.01.2012 22:11, )
- friend T RAW_VALUE(strict a). По ссылке, в функции main - Скрипач(06.01.2012 21:02 - 21:08, ссылка)
- Смущает один момент - рано или поздно потребуются операции между разными строгими типами. Или хотя бы помножить на константу. Что делать тогда? - diper(06.01.2012 20:59)
- Абсолютно с вами согласен, коллега :) Читайте начальное сообщение. Скрипач(48 знак., 06.01.2012 16:26)
- Еще одна фигня. Скрипач(284 знак., 07.01.2012 00:36)
- Не знаю, как проще, а прямолинейно — класс с приватным полем нужного типа (пусть int), перегруженные операторы + - * /, operator int () для автоматического приведения где надо. А вот конструктор, принимаюший int — обязательно explicit, для =ReAl=(81 знак., 31.12.2011 01:05, )
- Если я правильно понял, сделать базовый класс strict_int (с перегруженными операторами) и от него наследовать всякие time_1sec_t и time_10ms_t не получиться(полиморфизм)? Скрипач(113 знак., 31.12.2011 01:34)
- Похоже есть такая магия. Если взять в качестве базового параметризированный класс то потомки будут от разных классов, правильно? - Скрипач(31.12.2011 02:22)
- Уфф. Как все запутанно. Скрипач(837 знак., 03.01.2012 16:15 - 16:51)
- С самого начала хотел написать, но пароль тогда где-то затёр. А без него сикось-накось текст. Можно развести вторым параметром по его значению. Либо осмысленным (для времени, например, масштаб в нужных единицах) и тогда его ещё и в каких-то ReAl(968 знак., 03.01.2012 18:38)
- Класс! Эх, жаль нельзя на такой манер ТЕКСТОВУЮ СТРОКУ, в шаблон "подставлять". Почему, кстати? "Из соображений эффективности"? А обойти можно? - Скрипач(03.01.2012 19:45 - 19:49)
- Текстовая строка (любая) имеет тип char*. В чистом С тоже. По значению указателя не разводится, видимо, по причине неизвестности на момент компиляции. Но можно попробовать сделать ещё один шаблон «тип данных» с идентификатором в enum (для ReAl(397 знак., 03.01.2012 20:42)
- Завести один enum для всех, использованных в проекте, единиц измерения конечно же выход. По примеру LONWORKS их нужно не так уж много. Спасибо, подумаем :) - Скрипач(03.01.2012 20:56)
- Не, без разведения enum-ом они одинаковые, пускает x = a; Мне самому еще с шаблонами разбираться и разбираться. Так что как-то так (макрос лень было лепить, скопипастил и отредактировал). ReAl(1616 знак., 03.01.2012 21:27)
- Если есть внятные идентификаторы в enum, то потребность в текстовом описателе не очень. Да и typedef избыточен :) Скрипач(649 знак., 03.01.2012 21:49 - 21:57)
- float, кстати, тоже, в качестве параметры шаблона, не пущають :) А тоб я scale сделал бы с плавающей точкой. Гулять так гулять :) - Скрипач(03.01.2012 21:54)
- Если есть внятные идентификаторы в enum, то потребность в текстовом описателе не очень. Да и typedef избыточен :) Скрипач(649 знак., 03.01.2012 21:49 - 21:57)
- Не, без разведения enum-ом они одинаковые, пускает x = a; Мне самому еще с шаблонами разбираться и разбираться. Так что как-то так (макрос лень было лепить, скопипастил и отредактировал). ReAl(1616 знак., 03.01.2012 21:27)
- Завести один enum для всех, использованных в проекте, единиц измерения конечно же выход. По примеру LONWORKS их нужно не так уж много. Спасибо, подумаем :) - Скрипач(03.01.2012 20:56)
- Текстовая строка (любая) имеет тип char*. В чистом С тоже. По значению указателя не разводится, видимо, по причине неизвестности на момент компиляции. Но можно попробовать сделать ещё один шаблон «тип данных» с идентификатором в enum (для ReAl(397 знак., 03.01.2012 20:42)
- Класс! Эх, жаль нельзя на такой манер ТЕКСТОВУЮ СТРОКУ, в шаблон "подставлять". Почему, кстати? "Из соображений эффективности"? А обойти можно? - Скрипач(03.01.2012 19:45 - 19:49)
- С самого начала хотел написать, но пароль тогда где-то затёр. А без него сикось-накось текст. Можно развести вторым параметром по его значению. Либо осмысленным (для времени, например, масштаб в нужных единицах) и тогда его ещё и в каких-то ReAl(968 знак., 03.01.2012 18:38)
- Уфф. Как все запутанно. Скрипач(837 знак., 03.01.2012 16:15 - 16:51)
- Похоже есть такая магия. Если взять в качестве базового параметризированный класс то потомки будут от разных классов, правильно? - Скрипач(31.12.2011 02:22)
- Если я правильно понял, сделать базовый класс strict_int (с перегруженными операторами) и от него наследовать всякие time_1sec_t и time_10ms_t не получиться(полиморфизм)? Скрипач(113 знак., 31.12.2011 01:34)