View类中用指针引用Doc类的一个结构变量成员的问题在View类中引用Doc类的一个结构变量中的成员值在Doc类中 有如下结构定义:             typedef struct tagGdsT{
                       WORD   wT; //
     float fNp;
                                 DWORD dwB;
     float fNv;
    
                    }GdsT;
           GdsT *pGdsT;已经pGdsT=new GdsT[800];
  然后分别赋值给GdsT[800]现在的问题是如何在View类中引用GdsT中的wT呢?
在View类中:
for(int i=0;i<800;i++)
{
 //
  //<---这个循环体中依次用pDoc指针得到pGdsT->wT的值呢?
}试过((pDoc->pGdsT)+i)->wT 的用法,结果不对头。
感觉指针除了增加一个GdsT地址增量之外,还自动增加了一个 循环变量i的值,很是奇怪。
 具体怎么写呢?

解决方案 »

  1.   

    已经加分了!(除非在管理状态,不显示出来,奇怪!)
    /////////不知道为什么会这样
    针除了增加一个GdsT地址增量之外,还自动增加了一个 循环变量i的值,很是奇怪。高手指点一下
      

  2.   

    用数组
         WORD   wT[800]; //
         float fNp[800]; 
         DWORD dwB[800]; 
         float fNv[800]; 
    来操作就正常!不知道是不是字节对齐问题?
      

  3.   

    是不是有两处GdsT定义?
    或改过?(如是Rebuild All)不应该是字节对齐的问题
    #pragma pack(push, 1)
    #pragma pack(pop)
      

  4.   

    还是不得,很是奇怪!
    在doc类构造函数中
    CGlook703Doc::CGlook703Doc()
    {
    pGdsTd=new GdsTd[1500];}
    在另外的doc类函数中
    SetFilePointer(hFile1,100,0,FILE_BEGIN);  //hFile 是已经打开的文件句柄   
        ReadFile(hFile,pGdsTd,14*800,&dwRead,NULL);
    就是这样!但是pDoc->pGdsTd[i].wT   或 ((pDoc->pGdsT)+i)->wT   或(pGdsT+i)->wT   就是不得!
    wT中的内容竟然是 0X CD CD !
    好像根本没有读入pGdsTd的内存块!但是若用WriteFile(hFile2,pGdsTd,14*800,&dwRead,NULL);  //hFile2是用来试验的写入文件句柄来验证pGdsTd内存块中的内容的时候却又发现写入磁盘的文件完全正确!怪啊!!
    谁能指点一二?——用数组也能解决问题,
    但是我想知道问题何在?!
      

  5.   

    #pragma pack( 1)
    typedef struct tagGdsT{
                            WORD   wT; //
                            float fNp;
                            DWORD dwB;
                            float fNv;
        
                        } GdsT;
               GdsT *pGdsT;#pragma pack()就是编译器字节对齐问题!