我要用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)我程序的思路是否正确?
     
 

解决方案 »

  1.   

    TO  mousubin(msb):
        谢谢回复!
        也就是说按我的思路做是可以的罗???
      

  2.   

    你的数据类 CTestBedData 里应该有Serialize函数
    然后在文档类中调用 数据类的Serialize
    这和map没什么关系
      

  3.   

    CTestBedData是我自己建的类,没有Serialize.我想把M组数据封装到集合类MAP中,然后再用文档类里的Serialize保存.