К примеру: есть классы, которые должны реагировать на определенный тип других классов. тип класса у меня записан в строке.
т.е.
class SomeClass
{
public:
virtual const QString & classType() const;
};
В наследниках переопределяются строки, которые возвращаются.
А есть классы, которым передаются на исследование SomeClass, и в зависимости от строки classType() принимает решение, будет он его обрабатывать или нет.
А т.к. SomeClass наследников много, то простым перебором не хочется заниматься, как сейчас сделано
например
bool itemConformsToThis(const QString & Role, SomeClass * item)
{
if(item->className()=="..." || item->className()=="...." || ....) return true;
return false;
}
Для каждого класса обработчика внести локальный статический хеш, в который заранее внести строки описатели тех классов, с которыми хотим иметь дело.
т.е. образно
class ClassWorker
{
private:
static QStringList roles;
}
//где то инициализируем (собственно вопрос где)
bool itemConformsToThis(const QString & Role, SomeClass * item)
{
return roles.contains(item->classType());
return false;
}