// multiple inheritance

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

class ActionEvent {
    // [...] implementation, methods
};

class ActionListener {
public:
    virtual void actionPerformed(const ActionEvent &e)
      const = 0;
};

class MouseEvent {
    // [...] implementation, methods
};

class MouseListener {
public:
    virtual void mouseClicked(const MouseEvent &e) const = 0;
    // [...] other methods for clicking, dragging, etc.
};

class Handler : public ActionListener, public MouseListener {
public:
    void actionPerformed(const ActionEvent &e) const;
    void mouseClicked(const MouseEvent &e) const;
private:
    // [...] auxiliary data, methods?
};

void Handler::actionPerformed(const ActionEvent &e) const {
    // [...] handle action event, e.g., button press
}

void Handler::mouseClicked(const MouseEvent &e) const {
    // [...] handle mouse click
}

int main() {
}
