c++ - C ++将结构传递给函数以访问嵌套结构
问题描述
我有一些以嵌套结构组织的数据,并正在尝试访问它。有 4 层,然后最终的结构总是有 2 个变量;val
和addr
:
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 );
}
}
那么有没有办法将结构嵌套发送到函数,以便函数可以访问其中的变量?
谢谢
解决方案
您可以使用函数模板:
template<typename T>
void writeFlash(const T& dataParam){
// ... as before
推荐阅读
- html - 我不想将 CSS 类的属性应用于列表中的元素
- javascript - 如何使用另一个对象访问 JavaScript 对象?
- php - 升级 Wordpress 5.0.3 后,Woocommerce 订单未全部显示
- python - 如何创建具有不同长度的数组系列的 DataFrame(某些部分中缺少数据)
- docker - 读取外部容器 Docker
- python - 从矩阵中获取轴
- node.js - 我自己的 TypeScript 模块的“找不到模块”
- swift - 将 github 存储库部署到 heoku 时遇到问题
- c# - 使用另一个应用程序实现 UI 自动化
- android - Firebase 远程配置获取缓存差异 16.3.0 与 16.0.0