Скрипачпророк (03.01.2012 21:49 - 21:57, просмотров: 159) ответил 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;
}
... но не любой ценой.