Videos
ida - Are there any interactive decompilers besides HexRays? - Reverse Engineering Stack Exchange
Can people stop calling Hex-Rays a C/C++ decompiler?
How good is the Hex Rays training? Or the new SANS 710?
Hex-rays is moving to a Subscription model
Where is Hex-Rays's headquarters?
Who are Hex-Rays's competitors?
Short answer: No, there is no other interactive decompiler, at least not for native codes.
Long answer: The Hex-Rays decompiler was created with the idea of interactiveness while all the other decompilers for native code that I know (I'm not talking about Java or .NET) were created as batch tools. The closest to a half interactive decompiler is Snowman, but is not really interactive (unless selecting which function you want to decompile when using the IDA Plugin is considered interactiveness.)
There is a toy "decompiler" (if the name is appropriate, as it's more a translator to pseudo-C than anything else) in Hopper but is neither interactive.
Boomerang, REC, and all the other abandoned decompiler projects that I know, were created either as command line batch tools or had a GUI just to let you select a binary.
So, as said at the beginning: the only interactive decompiler for native codes is the Hex-Rays one.
PS: I don't know why people is not focusing in the question instead of proposing their favourite tools... A disassembler is not an interactive decompiler.
The plasma project seems to have an interactive decompiler: https://github.com/joelpx/plasma
From the documentation:
$ plasma -i tests/server.bin
>> v main # or v 0xFFFFFF (replace 0xFFFFFF with the address of the function)
# You are now in visual mode. Press P to define the function. Then press TAB to decompile the function into pseudocode.
# You can hover over a variable using your arrows keys and press R to rename a variable. You can press X to see all xrefs to the variable.
When I was trying to decompile a C++ program, I looked a lot about it, and saw lots of suggestions about "Hex-Rays C/C++" compiler, including on the ReverseEngineering subreddit.
The thing is: Hex-Rays is NOT, ABSOLUTELY NOT capable of understanding C++, at all.
Reverse Engineering C++ in first place is not easy, still tools for that exist, the thing is that Hex-Rays don't provide basic tools to work with C++, it supports structs, enums and unions, it doesn't understand even C emulation of C++ concepts, neither has tools to help it.
For example: The program I am decompiling, has some extremely long inheritance chains of classes, meaning that the "end" class you are working with, might have lots of different possible v-tables.
The plugin "hexrayscodeexplorer" help a bit, specially with its automatic v-table struct creation, still it is a bit problematic, specially when you might end with 30 vtable structs bloating your database, for each class.
So please, be clear about it: Hex-Rays is a C decompiler, not C++, it can help a bit in understanding C++ code, but it is NOT a C++ decompiler.
Other unsupported C++ features: Hex-Rays (and IDA itself) struggle with STL, even the STL names themselves make IDA barf, either because of the length (that also break sigmaker.exe), or the use of characters that are unsupported by IDA in identifiers(< > , etc... also I am aware you can manually allow those in the .cfg, but the editor cursor highlight then start to misbehave)
Hex-Rays don't come with any native RTTI tools beside Borland (and why it DOES have Borland tools native, and not the others?).
There is no easy way that I found, to organize class hierarchies beside making notes by yourself outside of Hex-Rays.
Hex-Rays (and IDA) provide no clear way to support polymorphism in a organized manner, even in functions, if you have 20 variations of a single function, you must come up with 20 unique names for it... I eventually realized the most easy way to work with this is abuse IDA C++ name demangler: ie: generate a mangled name of the function, and put it in IDA, that will automatically demangle it back for display, this way instead of naming it function, function1, function2, function3, or something silly like that, you can use 3 mangled names, that will render as function() in the function list.
there are many other issues, but people are nagging me here and not letting me write, so my post ends here, but my point is: at least with its current features, Hex-Rays is NOT a C++ decompiler, only a pure C one.