Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 没有完全理解这部分代码_C++_Data Structures_Struct_Unions - Fatal编程技术网

C++ 没有完全理解这部分代码

C++ 没有完全理解这部分代码,c++,data-structures,struct,unions,C++,Data Structures,Struct,Unions,我最近遇到了这个密码,我无法理解它。谁能给我解释一下那里发生了什么事吗 union Color32 { struct ARGB { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } parts; uint32_t argb; Color32() : argb(0) {} Color32(uint32_t c_argb) : argb(c_argb) {} Color

我最近遇到了这个密码,我无法理解它。谁能给我解释一下那里发生了什么事吗

union Color32
{
   struct ARGB
   {
      uint8_t b;
      uint8_t g;
      uint8_t r;
      uint8_t a;
   } parts;
   uint32_t argb;
   Color32() : argb(0) {}
   Color32(uint32_t c_argb) : argb(c_argb) {}
   Color32(uint8_t a, uint8_t r, uint8_t g, uint8_t b)
   {
       parts.a=a;
       parts.r=r;
       parts.g=g;
       parts.b=b;
   }
};

ARGB是一个由4个单元组成的结构,代表绿色、蓝色、红色,对于a我不知道。 该结构是用名称parts创建的,因此当您必须使用它时,您必须像:parts.r=20或parts.g=50

然后创建一个对象颜色,该颜色可以包含argb 4*8=32的4个参数

它用你给他的4个参数初始化了对象颜色32:a,b,c,d

Color32(uint8_t a, uint8_t r, uint8_t g, uint8_t b)
   {
   parts.a=a;
   parts.r=r;
   parts.g=g;
   parts.b=b;
   }

要继续,您有一个名为Color of 32 bits的对象,其中包含来自结构部分的4个8位对象。

ARGB是一个由4个单元组成的结构,表示绿色、蓝色、红色,对于a我不知道。 该结构是用名称parts创建的,因此当您必须使用它时,您必须像:parts.r=20或parts.g=50

然后创建一个对象颜色,该颜色可以包含argb 4*8=32的4个参数

它用你给他的4个参数初始化了对象颜色32:a,b,c,d

Color32(uint8_t a, uint8_t r, uint8_t g, uint8_t b)
   {
   parts.a=a;
   parts.r=r;
   parts.g=g;
   parts.b=b;
   }
要继续,您有一个名为Color of 32 bit的对象,其中包含来自结构部分的4个8 bit对象。

联合共享存储的成员。这与为每个成员分配不同存储的结构形成对比

此代码的作用是ARGB结构的成员b、g、r&a与Color32联合的其他成员ARGB共享存储

因此,设置argb值的构造函数隐式地将b、g、r&a的值设置为argb位模式的有序部分

相反,b、g、r&a构造函数建立argb的值

“ARGB”下面的图表很好地展示了这些部件是如何“打包”到32位块中的

我可能不需要解释b代表蓝色,G代表绿色,r代表红色,a代表透明度

如果需要big-endian/little-endian可移植性,您可能会遇到困难。

联合存储的成员共享存储。这与为每个成员分配不同存储的结构形成对比

此代码的作用是ARGB结构的成员b、g、r&a与Color32联合的其他成员ARGB共享存储

因此,设置argb值的构造函数隐式地将b、g、r&a的值设置为argb位模式的有序部分

相反,b、g、r&a构造函数建立argb的值

“ARGB”下面的图表很好地展示了这些部件是如何“打包”到32位块中的

我可能不需要解释b代表蓝色,G代表绿色,r代表红色,a代表透明度


如果有大的字节数/小字节的可移植性,你可能会遇到困难。

到目前为止你能做什么?从联盟的构造函数来看,我认为这可能是C++,而不是C。这是我的错。这是C++的,你能做什么?从联盟中的构造函数,我认为这可能是C++,而不是C阅读材料:,很高兴知道工会有构造函数。这是我的错。它确实是C++