354

Часть II. Программирование на C++

h03541.jpg

Рис. 14.2

Окно диалога Open (Открыть) типично для многих программ. Классы, даже такие простые как наш пример, значительно упрощают создание таких инструментов

Окончательный вариант выглядит просто и лаконично, и к тому же так, как и подобает выглядеть циклу for. Класс несколько усложнился, и заметьте, что в этом листинге нет функций-членов; в этой версии они определены как встраиваемые (см. листинг 14.7).

h03542.jpg

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