如何在结构初始值设定项列表中实例化类
How to instantiate class inside struct initializer list
给定一个结构:
typedef struct
{
enum IndicatorType model;
enum Cards cardIs[NUMBER_OF_CARD_SLOTS];
uint8_t NumberOfS;
HardwareTimers HwTimer;
Buzzer buzzer;
}indicator;
蜂鸣器类实例化为:
Buzzer::Buzzer(HardwareTimers* hwTimer)
如何使用初始值设定项列表实例化结构?
我尝试过的:
indicator ind =//ind is short for indicator.
{
.model = INDICATOR_MODEL_UNKNOWN,
.cardIs = {UNKNOWN_CARD},
.NumberOfScales = 0
};
给出"无法将'大括号括起来的初始值设定项列表(('从'大括号括起来的初始值设定项列表'转换为'蜂鸣器'">
我不确定如何将蜂鸣器添加到初始值设定项列表中并传递给作为结构一部分的硬件计时器。
有什么想法吗?
为什么不把indicator
变成一个类呢?如果Buzzer
具有成员函数,则无法从结构"对象"调用这些函数。如果创建一个新的Indicator
类并将其实例化,则可以创建一个Buzzer
子类,并保留它在此处尝试执行的所有相同功能。
假设您使用的是C++20,这样的事情应该可以工作:
struct Indicator
{
enum IndicatorType model;
enum Cards cardIs[NUMBER_OF_CARD_SLOTS];
uint8_t NumberOfS;
HardwareTimers HwTimer;
Buzzer buzzer;
};
Indicator ind // <- No equals sign
{
.model = INDICATOR_MODEL_UNKNOWN,
.cardIs = {UNKNOWN_CARD},
.NumberOfScales = 0,
// ...
};
C++无法动态初始化枚举和任何编译时已解决声明
可以通过静态使用模板来精细地完成
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 复制列表初始化的隐式转换的等级是多少
- 如何创建一个空的全局类并在启动时实例化它
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 约束和显式模板实例化
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 静态数据成员模板专用化的实例化点在哪里
- 错误的cv::face FacemarkLBF实例化
- 如何在结构初始值设定项列表中实例化类
- 初始值设定项列表是否足够静态以允许实例化模板?
- C++中参数列表中实例化对象的内存管理
- 从基类模板化列表中实例化子类对象
- 使用大括号初始化列表或传统的 ctor 语法实例化类型
- 我可以有一个要实例化的模板列表,而无需事先实例化
- 使用参数列表显式实例化类模板
- 当需要指针时,在参数列表中实例化类