读书人

一个很棘手的有关问题(有无好的模式?)

发布时间: 2012-02-12 17:16:34 作者: rapoo

一个很棘手的问题(有无好的模式??)
class waveback
{
public:
openfile(){wafi.open();};
redadata(){ fidata=wafi.read;};
compute(){ dsdata=cop.compute(int fidata)};
display(dsdata);
private:
wavefile wafi;
compu cop;
int fidata;
int dsdata;

};
本来这样也没有什么问题,但现在情况出现了.openfile ()redadata () compute()
都需要n次调用, 这样产生n个 dsdata, 但是这n个结果不能单独显示 需要 一起显示 也就是说 display(dsdata);这个函数只能调用一次 .

大家说说 如何是好 !!



[解决办法]
把dsdata定义成static vector <int> ;生成一个,往vector里插入一个
[解决办法]
class WaveBack
{
public:
Openfile(){wafi.open();};
Redadata(){ fidata=wafi.read;};
Compute(){ dsdata=cop.compute(int fidata)};
int GetComputed() { return dsdata;}
private:
WaveFile wafi;
Compu cop;
int fidata;
int dsdata;
};

class Displayer
{
public:
AddData(int dsdata) { mDsData.push_back(dsdata);}
void Display()
{
// display all the data in mDsData;
}


private:
std::vector <int> mDsData;
};


void MyWork()
{
WaveBack wave;
Displayer displayer;
for (.....) {
wave.Open.....
wave.Read....
wave.Compute...
dispayer.AddData(wave.GetComputed...);
}
displayer.Display();

}
[解决办法]
#include <vector>

...

class waveback
{
public:
openfile(){wafi.open();};
redadata(){ fidata=wafi.read;};
compute(){ dsdata.push_back(cop.compute(fidata))};
display(dsdata);
private:
wavefile wafi;
compu cop;
int fidata;
vector <int> dsdata;

};
[解决办法]
扔 vector 里面,
使用 vector.push_back 方法即可。

然后在 display方法中遍历这个 vector 即可 ~

读书人网 >C++

热点推荐