плюсы потыкать
пытался запилить заоверинжиниренный калькулятор с мапой "строчка -> команда" (где команда – интерфейс), но такую мапу создать не удалось, только с указателем на команду
я правильно понимаю, что это как-то связано с политикой оператора [] "если объекта по ключу нет, то будет создан"? ну типа абстрактный класс хрен создашь, тогда как указатель – это по сути просто инт
Нет, это никак не связано
Шли код а не слова, что там тебе не создать...
ну вот давай представим себе, что у меня есть интерфейс обработчика команд class OperationCommandProcessor { public: virtual State execute(State oldState, int operand) const = 0; }; и я наделал кучу разных реализаций на сложение-вычитание-etc: auto addCmd = AddCommandProcessor(); auto subCmd = SubtractCommandProcessor(); auto mulCmd = MultiplyCommandProcessor(); auto divCmd = DivideCommandProcessor(); и теперь хочу собрать в мапу "строковая команда -> обработчик" если я описываю как-то так, то всё прекрасно: const std::map<std::string, OperationCommandProcessor*> commands = { { "add", &addCmd }, { "sub", &subCmd }, { "mul", &mulCmd }, { "div", &divCmd } }; но стоит мне убрать создание обработчиков в пейр и убрать звездочку – код уже не собирается
Ну, State а бы убрал... Но ок
я не оценку спрашиваю :)
Всё правильно описал
но стоит мне убрать создание обработчиков в пейр и убрать звездочку – код уже не собирается Зачем убирать?
Обсуждают сегодня