MakeDynamicAnalyzerGroup
Пакет SDK для Сборки C++ совместим с Visual Studio 2017 и более поздними версиями. Чтобы увидеть документацию для этих версий, установите в данной статье селектор Версия Visual Studio в Visual Studio 2017 и более поздних версий. Он находится в верхней части оглавления на этой странице.
Функция MakeDynamicAnalyzerGroup
используется для создания динамической группы анализаторов. Члены группы анализаторов получают события по одному слева направо, пока не будут проанализированы все события в трассировке.
Синтаксис
auto MakeDynamicAnalyzerGroup(std::vector<IAnalyzer*> analyzers);
auto MakeDynamicAnalyzerGroup(std::vector<std::shared_ptr<IAnalyzer>> analyzers);
auto MakeDynamicAnalyzerGroup(std::vector<std::unique_ptr<IAnalyzer>> analyzers);
Параметры
analyzers
Вектор указателей IAnalyzer, включенных в динамическую группу анализаторов. Эти указатели могут иметь следующий формат: необработанный, std::unique_ptr
или std::shared_ptr
.
Возвращаемое значение
Динамическая группа анализаторов. Используйте ключевое слово auto
для захвата возвращаемого значения.
Замечания
В отличие от статических групп анализаторов, элементы динамической группы анализаторов могут быть неизвестны во время компиляции. Вы сможете выбрать членов группы анализаторов во время выполнения на основе входных данных программы или других значений, неизвестных во время компиляции. В отличие от статических групп анализаторов, указатели IAnalyzer
в динамической группе анализаторов используют полиморфизм, а вызовы виртуальных функций распределяются правильно. Платой за такую гибкость может стать более длительное время обработки событий. Если все члены группы анализаторов известны во время компиляции и полиморфизм не требуется, попробуйте применить статическую группу анализаторов. Для этого вызовите MakeStaticAnalyzerGroup
.
Динамическую группу анализаторов можно инкапсулировать внутри статической группы анализаторов. Для этого ее адрес следует передать в MakeStaticAnalyzerGroup
. Используйте этот метод для передачи динамических групп анализатора в такие функции, как Analyze
, которые принимают только статические группы анализаторов.