|
||||
|
5.4.3 Вложенные Классы Описание класса может быть вложенным. Например: class set (* struct setmem (* int mem; setmem* next; setmem(int m, setmem* n) (* mem=m; next=n; *) *); setmem* first; public: set() (* first=0; *) insert(int m) (* first = new setmem(m,first);*) // ... *); Если только вложенный класс не является очень простым, в таком описании трудно разобраться. Кроме того, вложение класов – это не более чем соглашение о записи, поскольку вложеный класс не является скрытым в области видимости лексически охватывающего класса: class set (* struct setmem (* int mem; setmem* next; setmem(int m, setmem* n) *); // ... *); setmem::setmem(int m, setmem* n) (* mem=m, next=n*) setmem m1(1,0); Такая запись, как set::setmem::setmem(), не является ни необходимой, ни допустимой. Единственный способ скрыть имя класса – это сделать это с помощью метода файлы-как-модули (# 4.4). Большую часть нетривиальных классов лучше описывать раздельно: class setmem (* friend class set; // доступ только с помощью членов set int mem; setmem* next; setmem(int m, setmem* n) (* mem=m; next=n; *) *); class set (* setmem* first; public: set() (* first=0; *) insert(int m) (* first = new setmem(m,first);*) // ... *); |
|
||