首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >其他文件中的C++初始值设定项列表

其他文件中的C++初始值设定项列表
EN

Stack Overflow用户
提问于 2015-09-17 20:31:36
回答 1查看 191关注 0票数 0

我有一个关于c++初始化器列表的问题。

我有一个带有常量结构的类,这些常量结构需要在初始化列表中初始化,因为它们是常量。这是完美的工作方式:

代码语言:javascript
运行
复制
bglib::bglib()
    : ble_class_evt_handlers(   {{ble_class_system_evt_handlers,7},
                                {ble_class_flash_evt_handlers,1},
                                {ble_class_attributes_evt_handlers,3},
                                {ble_class_connection_evt_handlers,5},
                                {ble_class_attclient_evt_handlers,7},
                                {ble_class_sm_evt_handlers,5},
                                {ble_class_gap_evt_handlers,2},
                                {ble_class_hardware_evt_handlers,4},
                                {NULL,0},
                                {ble_class_dfu_evt_handlers,1},
                                } ),
      ble_class_rsp_handlers(   {{ble_class_system_rsp_handlers,18},
                                {ble_class_flash_rsp_handlers,9},
                                {ble_class_attributes_rsp_handlers,6},
                                {ble_class_connection_rsp_handlers,9},
                                {ble_class_attclient_rsp_handlers,12},
                                {ble_class_sm_rsp_handlers,8},
                                {ble_class_gap_rsp_handlers,11},
                                {ble_class_hardware_rsp_handlers,21},
                                {ble_class_test_rsp_handlers,7},
                                {ble_class_dfu_rsp_handlers,4},
                                }  )

{}

cpp头文件包含以下内容:

代码语言:javascript
运行
复制
const struct ble_class_handler_t ble_class_evt_handlers[ble_cls_last];
const struct ble_class_handler_t ble_class_rsp_handlers[ble_cls_last];

现在我的问题是:有没有可能将init函数移到另一个文件中,我在bglib类的初始化器列表中引用了这个文件?例如,init list调用初始化数组的方法(我知道从init list调用方法是不可能的,但只是为了明确我想要做什么)。

原因是我需要像这样初始化更多的数组,我认为拥有一个包含数百行代码的初始化器列表是很丑陋的。

PS。我知道在c++中以这种方式使用const数组很难看,但我在C++项目中包含了一个C库,而且我没有时间完全重写C库。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 20:51:13

你有没有考虑过以下几点:

代码语言:javascript
运行
复制
bglib::bglib(): 
   ble_class_evt_handlers( 
#include  "ble_class_evt_handlers_init.inc"
                         ),
  ble_class_rsp_handlers( 
#include  "ble_class_system_rsp_handlers_init.inc"
                        )
{}

或者也许

代码语言:javascript
运行
复制
bglib::bglib() : 
#include "bglib_init.inc"
{}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32630370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档