读配置文件初始化类实例中的对外部只读不可写的公有变量。

有些变量,类的外部可读但不可写,权限为readonly。C++没有给类提供这样的关键字。

如果只需要写一次,不需要修改,就可以定义为公有常量。那可以使用构造函数对常量成员初始化。

但是有时候,这些数据又来源于配置文件,不能在类中打开再进行初始化。

所以可以考虑用一个类来对这些类的实例进行管理,替它们打开配置文件,再用这些数据去生成一个实例。



class ClassWithReadOnlyData
{
public:
     const ReadOnlyData m_r;
     ClassWithReadOnlyData(ReadOnlyData r) :m_r(r)
     { };

};
class ManagerClass
{
private:
    vector< pair< ClassWithReadOnlyData*,string > > instanceSet;//
public:
    ClassWithReadOnlyData*& GetInstanceByName(const string &name);
    void AddClassWithReadOnlyData(const string &iniFilePath,const string &name)
    {
         ReadOnlyData r;
         r = getDataFromIniFile(const string &iniFilePath);//从配置文件中读到数据 
	 //拿读到的数据对公有变量进行初始化 
         ClassWithReadOnlyData* instance = new  ClassWithReadOnlyData(r);
         instanceSet.push_back( pair< instance,name > );
    };
    void DeleteClassWithReadOnlyDataByName(const string &name);
};



释放ClassWithReadOnlyData*时,将指针置为NULL,但是不将vector该层删去。

但是没法阻止指针引用将空间释放,只能谁释放谁置NULL。

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值