ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
296447 Топик полностью
Скрипач, пророк (03.01.2012 21:49 - 21:57, просмотров: 140) ответил ReAl на Не, без разведения enum-ом они одинаковые, пускает x = a; Мне самому еще с шаблонами разбираться и разбираться. Так что как-то так (макрос лень было лепить, скопипастил и отредактировал).
Если есть внятные идентификаторы в enum, то потребность в текстовом описателе не очень. Да и typedef избыточен :)  enum data_id_t { PRESSURE, TEMPERATURE, TIME }; template <typename T, data_id_t 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);} }; strict<int,TIME,100> a,b; strict<int,TIME,100> c; strict<int,TIME, 1> x; int main(void){ a = b; a = b + c; a = x; }
... но не любой ценой.