В настоящее время я подключаю приложение, которое имеет несколько реализаций для одной цели. Во время выполнения проверяется, можно ли использовать соответствующую реализацию или использовать запасной вариант.
Для этого я хочу, чтобы все реализации реализовали статическую функцию static bool is_available()
.
Поскольку статические функции нельзя сделать абстрактными в базовом классе, существует ли какая-то магия препроцессора, которая позволит мне выводить сообщение об ошибке, если метод не реализован статически в дочернем классе?
is_available()
статичен? - person Stephan Lechner   schedule 28.02.2019is_available
? - person Indiana Kernick   schedule 28.02.2019is_available
будет просто проверять, можно ли загрузить библиотеки с помощьюdlopen
, поэтому пока нет необходимости создавать экземпляр этого класса для проверки доступности. - person Nidhoegger   schedule 28.02.2019CanCheckAvailablility<MyClass>
(вы придумаете лучшее имя). База CRTP просто вызоветis_available
в неоцененном контексте и не сможет скомпилировать, если функция недоступна. Могут быть лучшие решения. Это только первое, что пришло в голову. - person Indiana Kernick   schedule 28.02.2019is_available
? У меня есть решение проблемы, которого я не очень понимаю. - person Indiana Kernick   schedule 28.02.2019is_available
во всех подклассах! Если вам нужна автоматическая проверка, вам нужно будет использовать абстрактную виртуальную функцию. Компилятор обеспечит его реализацию. - person Indiana Kernick   schedule 28.02.2019