use attachInterrupt in libraries

Here is an example of something that has worked for me but I hope can be improved. It currently works with either INT0 or INT1 as determined by the pin number passed via the constructor. I would like to also support the 4 additional external interrupts available in the Mega but to do this, I have to replicate the interrupt handler for each potential interrupt source. This seems wasteful - is there a better way?

Thanks,
-Carl

myLib.h:

#ifndef _myLib_h
#define _myLib_h

#include <avr/interrupt.h>
#include <stdint.h>

volatile static uint8_t _irqRcvd0;
volatile static uint8_t _irqRcvd1;

class myLib
{
  public:
    myLib(uint8_t irqPin);
    uint8_t dataAvail();
    void clrIrq();
  private:
    uint8_t _irqPin;
    static void irqHandler0();
    static void irqHandler1();
};
#endif

myLib.cpp

#include <WProgram.h>
#include <myLib.h>

void myLib::irqHandler0() {
  _irqRcvd0 = true;
}

void myLib::irqHandler1() {
  _irqRcvd1 = true;
}

myLib::myLib(uint8_t irqPin)
{
  _irqPin = irqPin;                          // Note: pin 2 = INT0, 3 = INT1
  pinMode(_irqPin, INPUT);
  if (_irqPin == 2) {
    _irqRcvd0 = false;
    attachInterrupt(0, irqHandler0, FALLING);   // Monitor INT0
  } else if (_irqPin == 3) {
    _irqRcvd1 = false;
    attachInterrupt(1, irqHandler1, FALLING);   // Monitor INT1
  }
}

uint8_t myLib::dataAvail() {
  return ((_irqPin == 2 && _irqRcvd0) ||
          (_irqPin == 3 && _irqRcvd1));
}

void myLib::clrIrq() {
  uint8_t sreg;
  sreg = SREG;
  cli();
  if (_irqPin == 2)
    _irqRcvd0 = false;
  else if (_irqPin == 3)
    _irqRcvd1 = false;
  SREG = sreg;
}