Я разрабатываю систему, которая требует передачи различных данных из библиотеки очень низкого уровня в приложение C ++ более высокого уровня. Общий процесс - прикладной уровень C ++ делает запрос к низкоуровневой библиотеке, а затем низкоуровневая библиотека ответит асинхронно с результатом. Между приложением C ++ и библиотекой низкого уровня существует много уровней. Например, приложение может иметь метод GetEventDetails, который вызывает несколько других классов перед библиотекой низкого уровня. Э.Г.
App::GetEventDetails
--ClassA::GetEventDetails
---ClassB::GetEventDetails
-----LowLevelLib::GetEventDetails
..
.. at some point in future...
..
LowLevelLib::ReturnEventDetails
Теперь, когда библиотека низкого уровня возвращается с результатом, она не знает о прикладном уровне, чтобы передать результат обратно. Таким образом, один метод может передавать указатель на какой-либо обработчик уведомлений на всем пути от класса App до низкоуровневого кода, но он может добавить много дополнительного кода на каждом уровне, просто чтобы передать этот указатель.
Мне интересно, как другие подходят к подобным проблемам?