В22 Часть IV. Новые возможности C++

istr » TempFloat;

expense. SetExpenseftmount(TempFloat);

return istr;

}

Как видите, кроме организации доступа к своим данным-членам, эти классы почти ни на что не способны. Если вы не знакомы со строковым клас-;ом ANSI, то вам стоило бы вернуться к главе 21 "Понятие строк в ANSI С л ANSI C++" для более детального его изучения.

Эти два класса работают с тремя отдельными программами. Как уже гово-эилось, ExpSumI — это версия приложения, использующая традиционную обработку ошибок, a ExpSum2 — версия, основанная на обработке исключительных ситуаций C++. Третья программа, ExpMaker, является утилитой, тредназначенной в первую очередь для создания файлов с информацией о )асходах. Это не очень содержательная программа, но, очевидно, необходимая. Так как ExpMaker реально не затрагивает обсуждаемые в этой главе 'емы, то мы не станем анализировать аспекты разработки этой программы;

)днако для полноты картины ее следует здесь привести (листинг 22.29). В юнце концов без программы ExpMaker программам ExpSum нечего было бы >брабатывать.

h06221.jpg

/ Необходимые заголовки include <fstream.h> include <iomanip-h> include <einployee. h> include <expense.h>

oid GetNewExpenseItem(of streams outfile, const unsigned itemnum)

Expense NewExpense;

float ExpenseAmount;

char TempBuffer[256], ChompNewline;

// Диалог с пользователем cout « "\nExpense #" « (itemnum+1) « "\n";

// Ввод основных данных cout « "Expense date : ";

cin.get(TempBuffer, 256);

cin.get(ChompNewline) ;

NewExpense.SetDate(TempBuffer);

cout « "Description : ";

cin.get (TenipBuffer, 256);

cin.get(ChompNewline) ;

NewExpense. SetDescription (TempBuffer) ;