Класс, который можно реализовать несколькими бэкэндами и генерировать c для кодирования с использованием класса - PullRequest
0 голосов
/ 03 марта 2020

Извините за действительно плохое название. По сути, у меня есть программа, использующая созданный мной класс, который называется «Камеры». Класс Cameras пытается абстрагировать базовую медиа-среду, которую я использую для захвата изображений с некоторых камер. Он может использовать GStreamer или Libargus от Nvidia, и поэтому я создал два подкласса (GStreamerCameras и LibargusCameras), которые реализуют несколько абстрактных методов в камерах. В моем приложении для переключения между бэкэндами мне нужно менять объявление класса между GStreamerCameras cam; и LibargusCameras cam; каждый раз, когда я хочу сделать переключение. Могу ли я каким-то образом настроить свой проект так, чтобы при компиляции объектного файла, содержащего реализацию Camera, он выбирал там бэкэнд, и таким образом в коде он может просто сказать Cameras cam;, и мне никогда не придется ничего менять или объявлять подклассы? Что я действительно хочу, так это чтобы основное приложение не беспокоилось о том, какой бэкэнд использует класс Cameras. Что может быть хорошим способом структурировать файлы такого проекта, возможно, сделать его управляемым через аргумент makefile?

...