Я разрабатываю большую иерархию классов для фреймворка, которая потребует довольно много типоразмеров, когда это будет сделано.C++ dynamic_cast vs сохранение типа объекта в статическом enum?
Вопрос в том, насколько глупой идеей является статический член, который использует перечисление для хранения всех типов объектов в иерархии. Наличие статического элемента для каждого класса не приведет к увеличению размеров объектов, и даст (потенциально) более быстрый способ определения типа объекта во время выполнения, чем dynamic_cast.
По крайней мере, это основная идея. Насколько адекватным будет этот подход, и есть ли какие-либо потенциальные недостатки?
Существует один потенциальный недостаток. Эта идея не может работать. Попробуйте его с иерархией из 2 классов и посмотрите. –
Да, недостаток в том, что для получения правильного статического члена вы должны сначала знать тип объекта. –
Если вы не планируете получать доступ к статическому члену с помощью виртуальной функции, то есть. Если вы это сделаете, то это станет просто еще одной самодельной, неэффективной, неидиоматичной, недостижимой, избыточной реализацией RTTI. Получите тот, который дает вам компилятор, он уже существует, и он фактически (каламбур) свободен. –