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