上次那个贴得太快,现在把它改得完善一点。
class CParameters {
public:
CParameters(){};
~CParameters() {};
private:
class CValue {
public:
CValue():s_value(""){};
CValue(const char *value):s_value(value) {};
CValue(const string value):s_value(value) {};
CValue(const int value) {
stringstream ss;
ss << value;
s_value =ss.str();
};
CValue(const float value) {
stringstream ss;
ss << value;
s_value =ss.str();
};
CValue(const double value) {
stringstream ss;
ss << value;
s_value =ss.str();
};
~CValue() {};
const char *c_str() { return s_value.c_str();};
operator int() const { return atoi(s_value.c_str()); };
operator float() const { return atof(s_value.c_str()); };
operator double() const { return atof(s_value.c_str()); };
operator const char *() const { return s_value.c_str(); };
private:
string s_value;
};
class CParam {
public:
CParam() {};
~CParam() {};
public:
string Name;
CValue Value;
};
vector<CParam> ParamList;
public:
CParam *ParamByName(const char *field_name)
{
bool findit=false;
unsigned int i;
CParam p;
p.Name= field_name;
p.Value="";
for( i=0; i< ParamList.size(); i++)
{
if(ParamList[i].Name!=string(field_name))
continue;
findit=true;
break;
}
if(!findit)//如果没找到
{
ParamList.push_back(p);
}
return &ParamList[i];
};
};
这个可以完全模仿bcb的那个TParameters,用法更友好更方便。
void PersonControl::setConFields()
{
params->ParamByName("control_person_id")->Value =control_person_id;
params->ParamByName("ryid")->Value =ryid.c_str();
return ;
}
void PersonControl::getSelFields()
{
control_person_id =params->ParamByName("control_person_id")->Value;
ryid =params->ParamByName("ryid")->Value.c_str();
name =params->ParamByName("name")->Value.c_str();
old_name =params->ParamByName("old_name")->Value.c_str();
}