C++ AVR microcontroller optimization problem
The reason(s) why this doesn't work for you could be

heap memory allocation doesn't work at all on your setup
the interrupt doesn't see the updated pointer because the pointer isn't volatile.

That said, I'd advise not to use the heap at all on such a small target. And why would you? You will know at build time which pins you want to trigger, so you can create the object(s) globally or local to main().
Also, why use an interrupt? If it is just to try it, OK, go ahead, but for beginners I'd stick to other solutions. Check the FSM (Finite State Machine) style.
Coding for such a small system in C++ is IMO the good way, but be aware that it is not like coding for larger systems. You will have to know very well what you are doing, and you will find lots of C++ examples and advice that might be pefect for largere systems, but not for an AVR8.