From ReliCodia

It's not clear if Classes should be managed like resources. There is the UnregisterClass API, so in principle one could define a "class handle" object that unregisters the class in its destructor.

Common usage of Classes is to have just a few of them, register them at the beginning of the program and treat them as globally accessible by name. Windows frees the Class resources automatically at program exit.

An alternative would be to require a class handle to be used when creating any window.