Скажем, у меня есть базовый класс Validator
.
class Validator
{
public:
void validate(const string& str)
{
if( k_valid_keys.find(str) == k_valid_keys.end() )
throw exception();
}
private:
const static std::set<string> k_valid_keys;
};
Теперь предположим, что мне нужно расширить класс Validator
. Каждый производный класс будет иметь собственный набор действительных ключей.
Моя цель:
- оставить
k_valid_keys
членомValidator
. Нет необходимости добавлять его в каждый производный класс, особенно если их несколько. - сохранить
k_valid_keys
static
. Предположим, у меня есть несколько экземпляровValidator
(и его производных классов), а инициализацияk_valid_keys
требует больших затрат.
Как я могу полиморфно инициализировать член static
? ну, я знаю, что это невозможно сделать (пожалуйста, поправьте, если я ошибаюсь).
Итак, предполагая, что это невозможно сделать, есть идеи по лучшему дизайну для этой проблемы?
static
к каждому производному классу, если я могу волшебным образом инициализировать его виртуально. - person idanshmu   schedule 26.03.2014k_valid_keys
в каждом производном классе. - person idanshmu   schedule 26.03.2014