这个问题应该怎么解决??? 谢谢了 很急的,在线等!

解决方案 »

  1.   

    这个的意思就是告诉你  .number左边的那个变量需要时 类 结构体 或者联合体 的类型
    这个一般是类定义对象的问题 
      

  2.   

    struct indi 

          float number[DIMENSION]; 
          float best[DIMENSION]; 
          float bestfitness; 
          float fitness; 
          float speed[DIMENSION]; 
      int Total;
          float Sum;
          float Avg;
    }individual[POPSIZE];PSO* p=new PSO;
    buf=p->PMain();
    Buf[0]=individual[1].Avg;
    Buf[1]=individual[1].best[1];
    Buf[2]=individual[1].bestfitness;
    Buf[3]=individual[1].fitness;
    Buf[4]=individual[1].number[1];
    Buf[5]=individual[1].speed[1];
    Buf[6]=individual[1].Sum;
    Buf[7]=individual[1].Total;
    system\systemview.cpp(137) : error C2228: left of '.best' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(138) : error C2228: left of '.bestfitness' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(139) : error C2228: left of '.fitness' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(140) : error C2228: left of '.number' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(141) : error C2228: left of '.speed' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(142) : error C2228: left of '.Sum' must have class/struct/union type
    e:\谢俊凰的毕业设计\平台系统存档\新建文件夹\system\systemview.cpp(143) : error C2228: left of '.Total' must have class/struct/union type
    Error executing cl.exe.SystemView.obj - 8 error(s), 0 warning(s)
      

  3.   

    #define  DIMENSION  2
    #define  POPSIZE   20
    struct indi  
    {  
      float number[DIMENSION];  
      float best[DIMENSION];  
      float bestfitness;  
      float fitness;  
      float speed[DIMENSION];  
    int Total;
      float Sum;
      float Avg;
    }individual[POPSIZE];
      

  4.   

     
    wltg2001 要不我把代码传给你看看?
      

  5.   


    typedef struct _INDI 
    {
      float number[DIMENSION];  
      float best[DIMENSION];  
      float bestfitness;  
      float fitness;  
      float speed[DIMENSION];  
      int Total;
      float Sum;
      float Avg;} INDI;INDI individual[POPSIZE];
      

  6.   

    struct indi  
    {  
      float number[DIMENSION];  
      float best[DIMENSION];  
      float bestfitness;  
      float fitness;  
      float speed[DIMENSION];  
    int Total;
      float Sum;
      float Avg;
    }individual[POPSIZE];
    ============
    这个你写在什么地方啊?和后面的代码是不是在同一个文件中呢
      

  7.   

    rebort_Q   你这代码什么意思?  解释下好吗?
      

  8.   

    你发到我邮箱来吧,[email protected]
      

  9.   

    结构体数组和 使用的地方不是同一个文件里,结构体数组的申明和定义在PSO类的CPP 而用到的地方是View类的CPP   结构体不是全局变量么?  
      

  10.   

    wltg2001  已经发了,靠你了兄弟!
      

  11.   

    结构体数组声明在PSO类的CPP和.h我都试过了
    在cpp文件里,报错了8个错误,都是already define in obj
    放在.h里,只报了一个错误  结构体数组已经定义了 already define in obj ,其它的全局变量没有重复定义   另外这个VC工具也很怪,有时候编译不能通过,在按一次就通过了,大家有没有相似的经历
      

  12.   

    我的VS是2005,所以编译错误比较多,但是你的问题应该是这个吧:
    在systemview.cpp中的声明:
    extern  indi;
    extern  individual[POPSIZE];
    声明也是要加变量类型的,你的indi,indivaidual都没有加类型吧
      

  13.   

    这个我还真不知道怎么加?  indi是一个结构体,怎么写?
      

  14.   

    将你的代码改了一下,你作如下修改
    将结构的类型定义写到PSO.h中,写成如下形式:#include "Algorithm.h"
    //宏定义 
    #define POPSIZE 20 
    #define DIMENSION 2 
    //随机数定义 
    #define rdint(i) (rand()%(int)(i)) 
    #define rdft() (float)((double)rdint(16384)/(16383.0)) 
    #define rnd(a,b) (rdint((int)(b)-(int)(a)+1)+(int)(a)) 
    typedef struct 

          float number[DIMENSION]; 
          float best[DIMENSION]; 
          float bestfitness; 
          float fitness; 
          float speed[DIMENSION]; 
      int Total;
          float Sum;
          float Avg;
    } indi;

    class PSO : public Algorithm  
    {
    public:
    int   PMain();
    PSO();
    virtual ~PSO();
    .....在PSO.cpp中这样定义全局变量: indi individual[POPSIZE];
    在systemview.cpp中声明全局变量:extern indi individual[POPSIZE];
    另外,将前面的extern  indi;去掉,indi从你的代码上看是一个结构类型,并不是变量。
    代码我就不发过去了,我是VS2005,你用的是VC6,发过去你也编译不了
      

  15.   

    谢谢你啦!  
    wltg2001  大恩人啊!! 给分!!!