class FileSystem { // из вашей библиотеки
public:
…
std::size_t numDisks() const; // одна из многих функций-членов
…
};
extern FileSystem tfs; // объект для использования клиентами
// “tfs” = “the file system”Класс FileSystem определенно не тривиален, поэтому использование объекта theFileSystem до того, как он будет сконструирован, приведет к катастрофическим последствиям. Теперь предположим, что некий пользователь создает класс, описывающий каталоги файловой системы. Естественно, его класс будет использовать объект theFileSystem:
class Directory { // создан пользователем
public:
Directory( params );
…
};
Directory::Directory( params )
{
…
std::size_t disks = tfs.numDisks(); // использование объекта tfs
…
}Далее предположим, что пользователь решает создать отдельный глобальный объект класса Directory, представляющий каталог для временных файлов:
Directory tempDir( params ); // каталог для временных файлов