给出一个结构:
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 ++无法动态初始化枚举和任何编译时解决的声明
可以通过静态使用模板很好地完成