354
Часть II. Программирование на C++
Рис. 14.2
Окно диалога Open (Открыть) типично для многих программ. Классы, даже такие простые как наш пример, значительно упрощают создание таких инструментов
Окончательный вариант выглядит просто и лаконично, и к тому же так, как и подобает выглядеть циклу for. Класс несколько усложнился, и заметьте, что в этом листинге нет функций-членов; в этой версии они определены как встраиваемые (см. листинг 14.7).
1 // DIRLIST.H — Класс просмотра каталогов.
2 ftifndef _DIRLIST_H
3 #define _DIRLIST_H
4 ftinclude <dir.h>
5 #include <dos.h>
6 // Класс DIRLIST произведен от структуры ffblk
7 class DIRLIST : public ffblk
8 {
9 public:
10 // конструктор с аргументами по умолчанию, // деструктор не нужен
11 DIRLIST( const char *fname = "*.*", unsigned int attrib = 0)
12 ( done = findfirst( fname, this, attrib); }
13
14 // операция преобразования (см. главу 16)
15 operator const char*(){ return done ? 0 : ff_name; };
16 // постфиксный инкремент (см. главу 16)
17 int operator++(int)( return (done = findnext(this)); }
18 // префиксный инкремент вызывает постфиксный (см. главу 16),
19 int operator++()( return operator++(0); }
20 private:
21 int done;
22 };
23 ftendif