obviously this doesn't work, cause i can't pass an immutable pointer again in the undo queue (which has the ownership of the UndoableAction). Some sort of virtual UndoableAction* UndoableAction::clone() const function would be cool (to be implemented by subclasses to pass internal parameters to a new action instance).

Will certainly add a getCurrentTransactionName method, no problem. As for adding a clone method, hmm, not 100% sure.. I guess it's not unreasonable, but can't help thinking it'd be difficult to actually use.

well, is there a way to create a fresh new non const copy of a UndoableAction returning from getActionsInCurrentTransaction without an explicit dynamic cast ? maybe the UndoManager could take care of this?

If you have your own subclass that implements a clone method then you could just dynamic-cast it to your own class and call your clone method, can't you? (Since a clone method should be const there'd not even be a need for a const cast?)