在类实例化时,我想从文件中读取数据并将其处理成多个类对象。到目前为止我所做的(并且效果很好)是
myData::myData(const std::string & file):
data1_(this->read(file)),
processedData1_(this->createProcessedData1_(data1_)),
processedData2_(this->createProcessedData2_(data1_)),
processedData3_(this->createProcessedData3_(data1_))
{
}
在不同的类中,该read()
方法创建多个原始数据对象。在这种情况下,我不知道如何将东西打包到初始化列表中,所以我正在做一些事情
myData::myData(const std::string & file):
data1_(),
data2_(),
processedData1_(),
processedData2_(),
processedData3_()
{
this->read(file); // fills data1_, data2_
processedData1_ = this->createProcessedData1_(data1_, data2_);
processedData2_ = this->createProcessedData2_(data1_, data2_);
processedData3_ = this->createProcessedData3_(data1_, data2_);
}
我不喜欢这种方法的是
- 数据被初始化两次:一次(void)在初始化列表中,一次在构造函数中填充实际内容;然后
- 我无法将任何(已处理)数据对象标记为
const
.
有没有办法组织对象创建,使其全部发生在初始化列表中?