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