C ++将结构传递给函数以访问嵌套结构

时间:2020-01-08 16:07:03

标签: c++ function struct

我有一些按嵌套结构组织的数据,正在尝试访问它。有4层,然后最终结构始终具有2个变量; valaddr

struct Flash{
  struct Settings{
    struct UnderVoltage{
      struct Threshold{
        int16_t val = 2850;
        uint16_t addr = 0x4481;
      } Threshold;
      struct Delay{
        uint8_t val = 2;
        uint16_t addr = 0x4483;
      } Delay;
      struct Recovery{
        int16_t val = 2900;
        uint16_t addr = 0x4484;
      } Recovery;
    } UnderVoltage;
  } Settings;
} Flash;

我希望能够具有以下功能

void writeThreshold(){

  writeFlash( Flash.Settings.UnderVoltage.Threshold );

}

然后调用类似

的函数

void writeFlash( struct dataParam ){

  byte addr1 = dataParam.addr & 0xFF;
  byte addr2 = ( dataParam.addr >> 8 ) & 0xFF;

  uint8_t byteLen = sizeof( dataParam.val );
  byte valBytes[ byteLen ];
  for( int i = 0; i < byteLen; i++ ){
    valBytes[ i ] = dataParam.val >> ( i * 8 );
  }

}

有没有办法将结构嵌套发送给函数,以便函数可以访问其中的变量?

谢谢

1 个答案:

答案 0 :(得分:4)

您可以使用功能模板:

template<typename T>
void writeFlash(const T& dataParam){
// ... as before