我要用VC6.0做一个数据采集的SDI程序。
思路是: 在文档类里面定时接收计算机外部串口通讯传来的n个数据,把这些数据实时地显示到对话框上来。在某一时刻当用户觉得有必要保存数据时,可以在对话框上点击保存按扭保存n个数据到文档类里去。这样m个时刻点的m*n个数据可以显示到视图类的报表上。
我的程序要用到视图类--CTestBedView, 文档类--CTestBedDoc, 对话框类--CDataAcquisitionDlg, 数据类(把N个数据封装起来的组成一个类)--CTestBedData 等。
我想把保存的m组数据放到集合类MAP(比如CMapStringToOb)中,再把这个集合在文档类中用
Serialize(CArchive& ar)保存。
我参考了帖子(A):
http://poincare.matf.bg.ac.yu/~filip/nm/Seminarski/VC-21days-short/apf/apf.htm#Heading4
帖子(B):
http://search.csdn.net/Expert/topic/2111/2111292.xml?temp=7.647341E-02
中CMapStringToOb部分。
但我的数据类--CTestBedData中有10个温度变量,15个压力变量。针对每个变量都有一个GET方法和一个SET方法。
比如:
class CTestBedData : public CObject
{
public:
void set_fOilTemperature(float fOilTemperature); //设置属性的值的方法
float get_fOilTemperature(); //获得属性的值的方法
.
.
.
private:
float m_fOilTemperature; //属性的值是私有的,只能通过其方法来访问
.
.
.}
我在初始化时不可能像帖子(A)中例子那样:
CMapStringToOb mapPlanetDetails;
mapPlanetDetails.SetAt("Mercury",new CPlanetDets Â(4878, 0.054, 57.91, 87.969));
这样初始化时要对齐许多数字,很容易出错,所以我要用GET/SET方法。例如
CMapStringToOb mYTestBedData; //存放M个对象
for (i=0;i++;i<m)
{
CTestBedData tBedData; //创建由N个数据封装起来的一个对象
tBedData.set_fOilTemperature(248);
tBedData.set_fOilPressure(0.023);
.
.
.
mYTestBedData.SetAt(i.tostring(),tBedData); //把对象放入一个集合中
}
问题:
(1)我这种有属性和方法的对象放入集合类MAP中可以吗?如果只有属性的话是很好理解的。可是怎么理解方法放到集合类MAP中的?
我查了一下CMapStringToOb的所有技术资料,他可以存放对象。既然是对象,对象的类一定有方法,大家怎么理解把方法放到集合类MAP中的?
(2)我程序的思路是否正确?
思路是: 在文档类里面定时接收计算机外部串口通讯传来的n个数据,把这些数据实时地显示到对话框上来。在某一时刻当用户觉得有必要保存数据时,可以在对话框上点击保存按扭保存n个数据到文档类里去。这样m个时刻点的m*n个数据可以显示到视图类的报表上。
我的程序要用到视图类--CTestBedView, 文档类--CTestBedDoc, 对话框类--CDataAcquisitionDlg, 数据类(把N个数据封装起来的组成一个类)--CTestBedData 等。
我想把保存的m组数据放到集合类MAP(比如CMapStringToOb)中,再把这个集合在文档类中用
Serialize(CArchive& ar)保存。
我参考了帖子(A):
http://poincare.matf.bg.ac.yu/~filip/nm/Seminarski/VC-21days-short/apf/apf.htm#Heading4
帖子(B):
http://search.csdn.net/Expert/topic/2111/2111292.xml?temp=7.647341E-02
中CMapStringToOb部分。
但我的数据类--CTestBedData中有10个温度变量,15个压力变量。针对每个变量都有一个GET方法和一个SET方法。
比如:
class CTestBedData : public CObject
{
public:
void set_fOilTemperature(float fOilTemperature); //设置属性的值的方法
float get_fOilTemperature(); //获得属性的值的方法
.
.
.
private:
float m_fOilTemperature; //属性的值是私有的,只能通过其方法来访问
.
.
.}
我在初始化时不可能像帖子(A)中例子那样:
CMapStringToOb mapPlanetDetails;
mapPlanetDetails.SetAt("Mercury",new CPlanetDets Â(4878, 0.054, 57.91, 87.969));
这样初始化时要对齐许多数字,很容易出错,所以我要用GET/SET方法。例如
CMapStringToOb mYTestBedData; //存放M个对象
for (i=0;i++;i<m)
{
CTestBedData tBedData; //创建由N个数据封装起来的一个对象
tBedData.set_fOilTemperature(248);
tBedData.set_fOilPressure(0.023);
.
.
.
mYTestBedData.SetAt(i.tostring(),tBedData); //把对象放入一个集合中
}
问题:
(1)我这种有属性和方法的对象放入集合类MAP中可以吗?如果只有属性的话是很好理解的。可是怎么理解方法放到集合类MAP中的?
我查了一下CMapStringToOb的所有技术资料,他可以存放对象。既然是对象,对象的类一定有方法,大家怎么理解把方法放到集合类MAP中的?
(2)我程序的思路是否正确?
谢谢回复!
也就是说按我的思路做是可以的罗???
然后在文档类中调用 数据类的Serialize
这和map没什么关系