У меня есть базовый класс Base
и ряд подклассов BaseDerivate1
.. BaseDerivateN
. Часть моего кода является общей и поддерживает любой из подклассов, обращаясь к используемому классу через определение BASE_DERIVATE
.
Теперь мне нужно добавить статическую функцию, которую дочерние классы могут объявлять, но не обязаны. Для производных классов, которые объявляют StaticFunc()
, я хочу назвать это. Во всех остальных случаях я хочу вызвать резервную функцию Base::StaticFunc()
. Вызов выглядит так:
#define BASE_DERIVATE BaseDerivate1 // or some other child class
// somewhere else:
BASE_DERIVATE::StaticFunc();
Поэтому я намеренно использую здесь скрытие имени. StaticFunc
никогда не вызывается внутри класса. У меня есть вопрос: поддерживается ли это стандартом С++ или это приведет к ошибкам компилятора для некоторых компиляторов. Также: есть ли лучший способ сделать «статическое наследование»? Однако я застрял в концепции определения BASE_DERIVATE
.