如何在struct initializer list中实例化类

问题描述 投票:0回答:3

给出一个结构:

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
};

给出“无法将“用括号括起来的初始化器列表()”从“用括号括起来的初始化器列表”转换为“蜂鸣器”]

我不确定如何将蜂鸣器添加到初始化列表,并将其传递给结构的一部分的硬件计时器。

有什么想法吗?

c++ class struct
3个回答
0
投票

为什么不将indicator设为类?如果Buzzer具有成员函数,则将无法从结构“对象”中调用它们。如果创建一个新的Indicator类并将其实例化,则可以创建Buzzer的子类并保留与您在此处尝试执行的功能相同的所有功能。


0
投票

假设您使用的是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,
    // ...
};

0
投票

C ++无法动态初始化枚举和任何编译时解决的声明

可以通过静态使用模板很好地完成

© www.soinside.com 2019 - 2024. All rights reserved.