我先大致描述这个类是什么样子的:
class SaveClass
{
private:
//各种私有方法和变量
//...
public:
//公有方法
read(char * filename);//从 filename 读入配置
save(char * filename);//写入配置到 filename
//公有成员变量
int setting1;//配置数据 1
double setting2;//配置数据 2
std::string setting3;//配置数据 3
}
SaveClass cSave;
setting1 、 setting2 、 setting3 就是配置数据
直接在类定义里添加
这样可以方便的
cSave.setting1=123;
cSave.setting2=0.456;
cSave.setting3="abc 啊啊啊";
来读取和设置
关键点来了!
当 cSave.save("C:\sav.ini")的时候,要能自动写入 sav.ini 如下内容:
setting1=123;
setting2=0.456;
setting3=abc 啊啊啊;
当 cSave.read("C:\sav.ini")的时候,要能自动读入配置文件到对应变量
关键就是自动枚举类中的成员变量,自动把变量名转字符串,自动判断变量名的类型
也就是说我添加一个新成员变量 float setting4 的时候,不需要改写.save 方法和.init 方法就能自动适应
如果用 javascript 来做的话用 eval 、 tostring 等等可以很轻易的实现
但是 c++没有这么方便的函数
算上宏算上模板能不能想办法来用 c++实现设想的这个功能?
class SaveClass
{
private:
//各种私有方法和变量
//...
public:
//公有方法
read(char * filename);//从 filename 读入配置
save(char * filename);//写入配置到 filename
//公有成员变量
int setting1;//配置数据 1
double setting2;//配置数据 2
std::string setting3;//配置数据 3
}
SaveClass cSave;
setting1 、 setting2 、 setting3 就是配置数据
直接在类定义里添加
这样可以方便的
cSave.setting1=123;
cSave.setting2=0.456;
cSave.setting3="abc 啊啊啊";
来读取和设置
关键点来了!
当 cSave.save("C:\sav.ini")的时候,要能自动写入 sav.ini 如下内容:
setting1=123;
setting2=0.456;
setting3=abc 啊啊啊;
当 cSave.read("C:\sav.ini")的时候,要能自动读入配置文件到对应变量
关键就是自动枚举类中的成员变量,自动把变量名转字符串,自动判断变量名的类型
也就是说我添加一个新成员变量 float setting4 的时候,不需要改写.save 方法和.init 方法就能自动适应
如果用 javascript 来做的话用 eval 、 tostring 等等可以很轻易的实现
但是 c++没有这么方便的函数
算上宏算上模板能不能想办法来用 c++实现设想的这个功能?