Название: Как произвести инициализацию статического списка/хеша? Отправлено: Fregloin от Ноябрь 12, 2012, 16:29 Привет. Как произвести инициализацию статического списка?
т.е. в классе есть статический список строк, где его инициализировать? В начале модуля? Класс в будущем будет размещаться в отдельной динамической либе. Название: Re: Как произвести инициализацию статического списка/хеша? Отправлено: GreatSnake от Ноябрь 12, 2012, 17:16 Что есть "статический список строк"? Про какие строки идёт речь?
Название: Re: Как произвести инициализацию статического списка/хеша? Отправлено: Fregloin от Ноябрь 12, 2012, 17:26 К примеру: есть классы, которые должны реагировать на определенный тип других классов. тип класса у меня записан в строке.
т.е. class SomeClass { public: virtual const QString & classType() const; }; В наследниках переопределяются строки, которые возвращаются. А есть классы, которым передаются на исследование SomeClass, и в зависимости от строки classType() принимает решение, будет он его обрабатывать или нет. А т.к. SomeClass наследников много, то простым перебором не хочется заниматься, как сейчас сделано например Код: bool itemConformsToThis(const QString & Role, SomeClass * item) Для каждого класса обработчика внести локальный статический хеш, в который заранее внести строки описатели тех классов, с которыми хотим иметь дело. т.е. образно Код: class ClassWorker //где то инициализируем (собственно вопрос где) Код: bool itemConformsToThis(const QString & Role, SomeClass * item) Название: Re: Как произвести инициализацию статического списка/хеша? Отправлено: Fregloin от Ноябрь 12, 2012, 17:29 Почему не делаю через dynamic_cast, потому что хочу отойти от этого, разбиваю программу на модель MVC, и что бы классы модель, контроллер и представление общались друг с другом толбько через общий интерфейс описанные в абстрактных классах. плюс для каждого конечного объекта где будет работаь ПО поведение классов и их взаимодествие может различаться, а так посредством плагинов поведение ПО можно изменять. Вот моя цель.
Название: Re: Как произвести инициализацию статического списка/хеша? Отправлено: GreatSnake от Ноябрь 12, 2012, 17:34 Ну, хотя бы так:
Код
Название: Re: Как произвести инициализацию статического списка/хеша? Отправлено: Akon от Ноябрь 12, 2012, 19:37 Ну, инициализируем чем локальнее, тем лучше, т.е. в bool itemConformsToThis(const QString & Role, SomeClass * item), если только там список и требуется.
Код: bool itemConformsToThis(const QString & Role, SomeClass * item) |