定义了一个结构体 struct RGB
{
short red;
short green;
short blue;
};另外声明了两个结构体,和一个结构体数组,想在结构体数组初始化的时候,根据普通数组的赋值方法进行赋值RGB oncolor,offcolor;
oncolor.red=255;
...
offcolor.blue=-255;

RGB case1[4][4]={
{oncolor,oncolor,oncolor,oncolor},
{oncolor,offcolor,oncolor,oncolor},
{oncolor,oncolor,offcolor,oncolor},
{oncolor,oncolor,offcolor,oncolor}
};
但是提示说error C2440: 'initializing' : cannot convert from 'struct CMyGenetic::RGB' to 'short'如果用case1[0][0]=oncolor;这种方法的确可以,但是这个数组是4*4还好,后面还有20*20的,数组内容又是没有规律的。
想到这点,眼前就一黑。有没有办法对其进行初始化呢?
比如在结构体里边定义个什么函数= =请赐教~~

解决方案 »

  1.   

    VC中RGB已经被定义为宏了 
    Declared in wingdi.h
    #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \ 
        ((WORD) (g) << 8)) | \ 
        (((DWORD) (BYTE) (b)) << 16))) 改一个名字看看
      

  2.   

      struct RGB
        {
            short red;
            short green;
            short blue;
        };
    别用结构,用COLORREF类型就可以了。可以用GetRValue等函数分别获取颜色分量
      

  3.   

    error C2440: 'initializing' : cannot convert from 'struct CMyGenetic::myRGB' to 'short'改成myRGB还是不行。关键是前面myRGB已经用了很多了= =现在想收,收不回来了
      

  4.   

    定义类型的时候就赋值,需要常量#define oncolor {255,0,0}
    #define offcolor {0,0,-255}
    //  myRGB oncolor,offcolor;
    //  oncolor.red=255;
    //  offcolor.blue=-255;            
      myRGB case1[4][4]=
      {
        {oncolor,oncolor,oncolor,oncolor},
        {oncolor,offcolor,oncolor,oncolor},
        {oncolor,oncolor,offcolor,oncolor},
        {oncolor,oncolor,offcolor,oncolor}
      };