|
Основные концепции Если гомоморфизм хорошо подходит для других классов, значит, он подойдет и для указателей. Концепция проста: указатель и указываемый объект порождаются от одного и того же чисто абстрактного базового класса. class Foo { public: virtual void do_something() = 0; virtual void do_something_else() = 0; }; class PFoo : public Foo { private: Foo* foo; public: virtual void do_something() { foo->do_something(); } virtual void do_something_else() { foo->do_something_else(); } }; class Bar : public Foo { // Все для производного класса }; Вместо перегрузки оператора -> в PFoo используется делегирование. Приведенный фрагмент лишь слегка затрагивает данную тему. На практике приходится учитывать множество деталей, начиная с того, как скрыть указатели и указываемые объекты от клиентов. |
Copyright 2005. Климов Александр. All Right Reserved.