c++ - que - pasa el mouse para ver un campo después del operador->() en Visual Studio mientras se depura
la aplicacion se encuentra en modo de interrupcion visual studio 2017 (2)
Tuve una clase pequeña:
class A{ public:int aField; }
A continuación, mientras estoy depurando, si aField mouse alrededor de un aField en a->aField , Visual Studio mostrará el valor del campo muy bien (como un pequeño reloj).
A* a=new A();
a->aField=1234;
//^ hover here
Luego actualicé el código para anular operator-> : -
class APtr{ //my custom smart pointer
A* ptr;
A* operator->(){ return ptr; }
}
APtr a;
.....
a->aField=1234;
//^ hover here
Ya no aparece pop-up (Hay una ventana emergente para a , pero no para un aField )
¿Cómo hacer aparecer el lindo popup?
Editar (razón de Bounty): "user1610015" ha proporcionado una solución factible, pero creo que podría haber una solución más conveniente (solo un poco puede ayudar). Una nueva solución incluso puede sugerirme a algunos complementos u otros IDEs.
Editar 2:
Aquí hay un ejemplo de la linda ventana emergente que quiero.
No funciona para el campo después del operator-> .
¡Ese es exactamente el caso para los visualizadores natvis! Afortunadamente, está usando VS2015, donde son totalmente compatibles.
Para tu ejemplo
class APtr
{
public:
APtr(A* a_Pointer)
{
ptr = a_Pointer;
}
A* operator->()
{
return ptr;
}
private:
A* ptr;
};
Tendrá que crear un archivo con extensión .natvis , por ejemplo APtr.natvis , con el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="APtr">
<SmartPointer Usage="Minimal">ptr</SmartPointer>
</Type>
</AutoVisualizer>
¡Entonces simplemente agrega este archivo a su proyecto, como cualquier otro archivo .cpp , y comienza a .cpp !
Para componer algo más complicado, recomiendo encontrar archivos *.natvis en C:/Program Files (x86)/Microsoft Visual Studio 14.0 y usarlos como ejemplo.