class CParameter {
public:
CParameter() : m_Exist(false) { }
CParameter(std::string & val, bool exist)
: m_Exist(exist), m_Value(val) {};
bool Exist() { return( m_Exist ); }
int AsInt() { return( atoi(str::Trim(m_Value).c_str()) ); }
double AsFloat() { return( atof(str::Trim(m_Value).c_str()) ); }
std::string AsString(){ return( m_Value.c_str() ); }
bool AsBool() {
std::string s(str::Trim(m_Value));
if(s.empty())
return(false);
std::transform(s.begin(),s.end(),s.begin(),tolower);
return(1 == strcmp( s.c_str(), "true"));
}
private:
std::string m_Value;
bool m_Exist;
};
его текущее использование выглядит таким:
std::string driver = m_Ini["driver"]["filepath"].AsString();
что является не совсем наглядным. После прочтения этого подраздела, пришел к выводу, что куда удобней будет перегрузить:
- operator std::string()
- opertator int()
- operator double()
- operator bool()
std::string driver ( m_Ini["driver"]["filepath"] );
т.е. компилятор зная тип, куда присваивается сам определяет нужную версию функции возврата и тем самым избавляет меня от необходимости писать эти громоздкие AsString() , AsInt() , etc
Комментариев нет:
Отправить комментарий