// xdist.cpp // Исключения и класс Distance #include using namespace std; /////////////////////////////////////////////////////////// class Distance //класс английских мер расстояний { private: int feet; float inches; public: class InchesEx { }; //класс исключений //--------------------------------------------------------- Distance() //конструктор (без аргументов) { feet = 0; inches = 0.0; } //--------------------------------------------------------- Distance(int ft, float in) //конструктор (2 арг-та) { if(in >= 12.0) //если дюймы указаны неверно, throw InchesEx(); //генерировать исключение feet = ft; inches = in; } //--------------------------------------------------------- void getdist() //получить длину от пользователя { cout << "\nEnter feet: "; cin >> feet; cout << "Enter inches: "; cin >> inches; if(inches >= 12.0) //если дюймы неправильные, throw InchesEx(); //генерировать исключение } //--------------------------------------------------------- void showdist() //вывод расстояний { cout << feet << "\'-" << inches << '\"'; } }; /////////////////////////////////////////////////////////// int main() { try { Distance dist1(17, 3.5); //конструктор (2 аргумента) Distance dist2; //конструктор (без аргументов) dist2.getdist(); //получить расстояние //вывести расстояния cout << "\ndist1 = "; dist1.showdist(); cout << "\ndist2 = "; dist2.showdist(); } catch(Distance::InchesEx) //поймать исключения { cout << "\nОшибка инициализации: " "значение дюймов превышает предельно допустимое."; } cout << endl; return 0; }