内部具有不同类型的类型数组

问题描述

我正在创建一个类类型 (Button) 的数组,我希望在数组 ButtonButtonMb 的子类/em> 那可能吗? 我试图有两个不同的构造函数并且只使用一个类,但由于参数数量相同,我无法到达任何地方。

这是我的代码为简单起见,我只包含了类声明的头代码

typedef void (*Callback)(void);
typedef int (*CallbackInt)(void);

class Button {
  public:
    OneButton _pin;

    Button(uint8_t pin,Callback click=NULL,Callback longCl=NULL,Callback dblCl=NULL);
  
    void loop();
};

class ButtonMb : public Button {
  public:
    CallbackInt _pinState;

    ButtonMb(CallbackInt pinState,Callback dblCl=NULL);
    
    void loop();
};

Button buttons[2] = {
  Button(14),ButtonMb([](){return slaves[0].getState("A15");)
};

有什么帮助吗?

注意:我使用的是 Arduino,因此代码可能会受到限制。

解决方法

您可以创建指针数组,而不是使用对象数组。基类的指针可以指向派生类,因此你可以在一个数组中拥有指向不同类型对象的指针。