我有一个关于c++初始化器列表的问题。
我有一个带有常量结构的类,这些常量结构需要在初始化列表中初始化,因为它们是常量。这是完美的工作方式:
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头文件包含以下内容:
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库。
提前感谢!
发布于 2015-09-17 20:51:13
你有没有考虑过以下几点:
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"
)
{}或者也许
bglib::bglib() :
#include "bglib_init.inc"
{}https://stackoverflow.com/questions/32630370
复制相似问题