С++ - язык, который изучается постепенно.Преобразование указываемого объекта в грань


Материалы книги получены с http://www.itlibitum.ru/

Преобразование указываемого объекта в грань

Итак, вы хотите получить грань по имеющемуся указываемому объекту. Для этого существует много способов, однако наиболее соответствующий стилю C++ заключается в использовании операторов преобразования.

class View {

public:

operator ViewEvents() { return new ViewEvents(this); }

operator ViewDrawing() { return new ViewDrawing(this); }

};

Другой вариант - разрешить пользователю напрямую использовать конструкторы класса грани:

ViewEvents ve(aView);

Об их достоинствах и недостатках можно спорить долго, но лично я предпочитаю первый способ по причинам, о которых мы вскоре поговорим. Существует еще один способ, который тоже заслуживает упоминания - присвоить каждому типу грани уникальный идентификатор и затем создать единую, многоцелевую функцию генерации граней для всех классов. Такая функция получает идентификатор типа грани в качестве аргумента и возвращает грань, если она поддерживается объектом, и NULL - в противном случае. Те из вас, кому приходилось пользоваться технологиями СОМ и OLE компании Microsoft, узнают знакомую функцию QueryInterface, поддерживаемую всеми объектами.


Назад    Содержание    Далее    

Copyright 2005. Климов Александр. All Right Reserved.
Сайт создан в системе uCoz