|
Идиомы и стили С++Идея с супером просто счастливая - мало того, что не надо изменять объект (код класс объекта), так еще и преобразование упрощается: сначала получим супер по интерфейсу, а потом другой интерфейс по суперу. Да, конечно, два преобразования подряд, но это все же лучше чем в каждом интерфейсе определять преобразование ко всем остальным. Зато интерфейсы ничего не знают друг о друге, им нет нужды, если им известен супер. И потом, поскольку интерфейсы являются простыми smart-ами, надо пожалуй задать функциюшечку, которая бы проверяла - есть ли вообще в природе изрядно подзабытый нами объект. Это место небезуспешно может занять перегруженный оператор operator!(). // Предварительные объявления классов class CComplexObject; class CInterface; class CSuperObject; // Определение объекта пропускаю, это Ваше занятие. // Определение супера class CSuperObject { private: PCComplexObject* co; // указатель на объект public: P// конструктор супера, PCSuperObject(CComplexObject* _co): co(_co) {} P// Живой ли наш объект? Дима! Помаши рукой маме! Pbool operator!(){ return co==NULL; } P// преобразование к интерфейсу Poperator CInterface(); } // Это интерфейс CInterface { private: PCComplexObject* co; // Укаэатель на объект PCSuperObject* cs; // указатель на супер PCInterface (CComplexObject* _co) {} // Это частный конструктор public: Pbool operator!(){ return co==NULL; } //проверка на существование объекта Poperator CSuperObject (); //преобразование к суперу }; Ну все, с этой темой я закругляюсь, но думаю, что идея понятна ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|