предоставляет общий интерфейс посещения, через которыйclass_Функция def-члена может быть расширена ненавязчиво, чтобы избежать загромождения класса.интерфейс. Он объявляет шаблон класса<def_visitor<T>>, который параметризован по производному типу<DerivedVisitor>, который обеспечивает фактическую функциональность<def>через его<visit>функции-члены.
Класс<def_visitor>является базовым классом, параматеризованным его производным классом. Класс<def_visitor>является классом протокола. Предполагается, что его производный класс, DerivedVisitor, будет иметь членскую функцию<visit>. Класс<def_visitor>никогда не создается непосредственно. Вместо этого экземпляр его подкласса, DerivedVisitor, передается в качестве аргумента классу.<def>Функция члена.
Ожидается, что параметр шаблона DerivedVisitor, предоставленный клиентом, будет: * быть получен в частном порядке из def_visitor * предоставлять другу доступ к классу def_visitor_access * определять одну или обе функции участника посещения, перечисленные в таблице ниже:
выражение
Тип возврата
Требования
последствия
<visitor.visit(cls)>
<void>
<cls>является примеромкласса, завернутого в Python.<visitor>является<def_visitor>производным классом.
Призыв к<cls.def(visitor)>направляется к этой функции члена.
<visitor.visit(cls,name,options)>
<void>
<cls>являетсяклассом_экземпляр, имя - строка C.<visitor>является<def_visitor>производным классом. Варианты — это контекстный необязательный аргумент.
Звонок в<cls.def(name,visitor)>или<cls.def(name,visitor,options)>перенаправляется на эту функцию члена.
Статья boost/python/def_visitor.hpp раздела Boost.Python Reference Manual Chapter 2. High Level Components может быть полезна для разработчиков на c++ и boost.