首页 > 解决方案 > C ++将结构传递给函数以访问嵌套结构

问题描述

我有一些以嵌套结构组织的数据,并正在尝试访问它。有 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 );
  }

}

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

谢谢

标签: c++functionstruct

解决方案


您可以使用函数模板:

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

推荐阅读