Я пытаюсь создать класс, который хранит настройки программы в виде std :: map. Поскольку все настройки программы хранятся в виде строк, я бы хотел метод доступа, который может вернуть настройку программы, приведенную к соответствующему типу. Я новичок в создании шаблонов в C ++, и это моя первая попытка:
class Settings
{
public:
Settings(void);
virtual ~Settings(void);
enum SettingName {HomePageUrl, WindowWidth};
template<class T>
T Get(SettingName name)
{
return boost::lexical_cast<T>(settings_[name]);
}
template<class T>
void Set(SettingName name, T value)
{
settings_[name] = boost::lexical_cast<CString>(value);
}
private:
std::map<SettingName, CString> settings_;
};
Однако я получаю ошибки компилятора:
...boost\boost_1_46_1\boost\lexical_cast.hpp(776): error C2678: binary '>>' :
no operator found which takes a left-hand operand of type
'std::basic_istream<_Elem,_Traits>' (or there is no acceptable conversion)
..settings.h(33) : see reference to function template instantiation
'Target boost::lexical_cast<CString,T>(const Source &)' being compiled
При форсировании вывод ошибки очень длинный, и я не совсем уверен, что с ним не так.