用于访问无符号整数的字节/字的C++类

SDD*_*SDD 0 c++ low-level

union LowLevelNumber
{
 unsigned int n;
 struct
 {
  unsigned int lowByte : 8;
  unsigned int highByte : 8;
  unsigned int upperLowByte : 8;
  unsigned int upperHighByte : 8;
 } bytes;
 struct
 {
  unsigned int lowWord : 16;
  unsigned int highWord : 16;
 } words;     
};
Run Code Online (Sandbox Code Playgroud)

这个联合允许我访问无符号整数字节或逐字.但是,代码看起来相当丑陋:

var.words.lowWord = 0x66;
Run Code Online (Sandbox Code Playgroud)

有没有办法可以让我编写这样的代码:

var.lowWord = 0x66;
Run Code Online (Sandbox Code Playgroud)

更新:
这实际上是关于编写短/漂亮的代码,如上例所示.联合解决方案本身确实有效,我只是每次访问lowWord或lowByte时都不想写.words或.bytes.

Mic*_*ker 6

union LowLevelNumber {
    unsigned int n;
    struct {
        unsigned int lowByte : 8;
        unsigned int highByte : 8;
        unsigned int upperLowByte : 8;
        unsigned int upperHighByte : 8;
    };
    struct {
        unsigned int lowWord : 16;
        unsigned int highWord : 16;
    };
};
Run Code Online (Sandbox Code Playgroud)

注意删除byteswords名称.