Всем привет! Начал вот писать класс для работы с командной строкой. За основу взял boost::program_options. Есть у меня в программе строковые и булевые опции. Для их хранения предусмотрены ассоциативные массивы. Только вот не хочу я делать методы типа GetStringOption, GetBoolOption и т.д. Хочется написать что-то вроде шаблонного метода, приведённого ниже, а потом вызывать: CmdLine C(argc,argv); const std::string s("disable_stderr"); bool b = C.GetOpt(s); const std::string ss("cfg_f_name"); std::string name = C.GetOpt(ss); Правда вот для C++ подобные фокусы неправильны. Как я понимаю без явной специализации не обойтись: bool b = C.GetOpt<bool>(s); std::string name = C.GetOpt<std::string>(ss); Вообщем задача понятна : вызывать нужный метод в зависимости от типа значения слева без явного указания этого типа. Как это реализовать в C++? Кусочек класса приведён ниже /* \class CmdLine \brief Class for encapsulate all command line operations */ class CmdLine { public: /// Constructor CmdLine(int argc, char** argv); /// Destructor ~CmdLine(); template <class T> T GetOpt(const std::string& OptionName) const { // Do anything } private: /// Map for string options, e.g. Script File Name std::map<std::string,std::string> StringOptions_; /// Map for string options, e.g. Disable StdErr Output std::map<std::string,bool> BoolOptions_; /// Options Description po::options_description Description_; };
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Krivenok_Dmitry
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Krivenok_Dmitry
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от romanSA
Ответ на:
Читайте Страструпа, млин......
от AIv
Ответ на:
комментарий
от Krivenok_Dmitry
Ответ на:
комментарий
от AIv
Ответ на:
комментарий
от Krivenok_Dmitry
Ответ на:
комментарий
от Vinick
Ответ на:
комментарий
от Krivenok_Dmitry
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Boost program_options and Generic selector trouble! (2005)
- Форум Вопрос по шаблонам функций-членов в С++ (2005)
- Форум gcc bug (global array of templated class - no destructors) (2005)
- Форум boost::program_options запретить ввод positional options (2016)
- Форум Почему ifstream не читает нормальные значения из sysfs? (2020)
- Форум [C++] Особенности реализации std::vector (2010)
- Форум C++: Может ли класс иметь static const переменую типа map ? (2006)
- Форум Вспоминая C++. Проблемы с линковкой template'ов (2007)
- Форум С++ Помогите избавиться от дублирования однотипного кода. (2018)
- Форум [C++ такой C++]Шаблонные методы и разделение на .h/.cpp (2010)