Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

arduino c++ - Array of a type with different types inside

I'm creating an Array of a Class Type (Button), and I want to have a subclass of it called ButtonMb inside the array Button Is that possible? I tried to have two different constructors and use only one Class, but since number of parameters are the same, I couln't reach anywhere.

Here is my code: for simplicity I only included header code for class declaration

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 click=NULL, Callback longCl=NULL, Callback dblCl=NULL);
    
    void loop();
};

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

Any help?

NOTE: I'm using Arduino, so code can be limited.

question from:https://stackoverflow.com/questions/65928646/array-of-a-type-with-different-types-inside

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Instead of using array of objects, you can create array of pointers. Pointers of base class can point to derived classes, so you can have pointers to objects of different types in one array.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...