ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
296403 Топик полностью
ReAl (03.01.2012 18:38, просмотров: 99) ответил Скрипач на Уфф. Как все запутанно.
С самого начала хотел написать, но пароль тогда где-то затёр. А без него сикось-накось текст. Можно развести вторым параметром по его значению. Либо осмысленным (для времени, например, масштаб в нужных единицах) и тогда его ещё и в каких-то методах использовать. template <typename T, int scale> class strict{ public: T val; explicit strict() : val() { } explicit strict(T init_val) : val(init_val) { } strict operator+(const strict b){ return strict(val + b.val);} strict operator-(const strict b){ return strict(val - b.val);} strict operator*(const strict b){ return strict(val * b.val);} strict operator/(const strict b){ return strict(val / b.val);} }; typedef strict<int,10> time_10ms_t; typedef strict<int,1000> time_1s_t; time_10ms_t a,b,c; time_1s_t x; int main(void){ a = b + c; a = x; } Либо просто «абы развести». enum stri_type { STRI_0, STRI_1 }; template <typename T, stri_type s> class strict{ public: T val; explicit strict() : val() { } explicit strict(T init_val) : val(init_val) { } ... }; typedef strict<int,STRI_0> time_10ms_t; typedef strict<int,STRI_1> time_1s_t;