I had a tiny class:-
class A{ public:int aField; }
Below, while debugging, if I hover mouse around aField
in a->aField
, Visual Studio will pop up the value of the field nicely (like a tiny Watch).
A* a=new A();
a->aField=1234;
//^ hover here
Then I upgraded code to override operator->
:-
class APtr{ //my custom smart pointer
A* ptr;
A* operator->(){ return ptr; }
}
APtr a;
.....
a->aField=1234;
//^ hover here
There is no pop up anymore. (There is a popup for a
, but not for aField
)
How to make the cute popup appear again?
Edit (Bounty reason): "user1610015" has provided a doable solution, but I think there might be a more convenient solution (only a little can help). A new solution can even suggest me to some plugins or other IDEs.
Edit 2:
Here is an example of the cute popup that I want.
It doesn't work for the field after operator->
.
That's exactly the case for natvis visualizers! Luckily, you're using VS2015, where they're fully supported.
For your example
You will need to create a file with
.natvis
extension, for exampleAPtr.natvis
, with the following content:Then you simply add this file to your project, like any other
.cpp
file, and start debugging!For composing anything more complicated, I highly recommend finding built-in
*.natvis
files inC:\Program Files (x86)\Microsoft Visual Studio 14.0
and using them as example.The debugger doesn't recognize the operator->, but you can get the same information by hovering over the smart pointer variable and then the right arrow on the tooltip: