Formally, if you've changed any token in the class definition,
they're not compatible. Otherwise... I don't know of any tool,
since most people wouldn't accept the risk if they've changed
anything. And since most people will be using make or something
similar, anytime anything changes in the header (including
correcting a misspelling in a comment), they will automatically
recompile all of the sources which include the header, directly
or indirectly.
The only problem comes if you've been playing around with the
file timestamps. And the answer to that is: don't do it.
Finally, for managing versions, I change the version (visible
outside my own build structures) anytime I change anything which
might change the interface. And I mangle the version number
into the library namespace, so you can't link code with the
wrong version of the library. But this is really only necessary
if you're delivering the library and headers to other people.
(And probably not even then—most programmers I know will
automatically do a clean build whenever they upgrade any of the
libraries they're using.)