OK, but HOW does a static member function know which instance of the object to dispatch the interrupt to?
That's your problem. Suppose the interrupt is a timer-based interrupt. Which instance(s) care? The interrupt can't tell that.
But that means having a list of instances, being able to add/delete instances on that list, dealing with too many entries on the list, etc.
Exactly.
Is there a nicer way?
I think you already know.
Now, if you wanted to talk specifics, maybe we would have other ideas.