Come ottenere informazioni di debug per un pimpl astratto (?) In C ++?
-
03-07-2019 - |
Domanda
Ho una classe wrapper che delega il suo lavoro a un pimpl e il pimpl è un puntatore a una baseclass / interfaccia senza dati specializzati in diversi modi.
In questo modo:
class Base
{
void doStuff=0;
};
class Derived
{
int x,y;
void doStuff()
{
x = (x+y*2)*x; //whatever
}
};
class Wrapper
{
Base* _pimpl;
void doStuff()
{
_pimpl->doStuff();
}
};
Ora funziona bene per la maggior parte del tempo, ma quando vado nel debugger non riesco a visualizzare x, y della classe Derived (perché potrebbe essere qualsiasi cosa). Normalmente questo è irrilevante, ma quando qualcosa va storto vedere lo stato di Derivato può essere importante, ma il brufolo oscura troppo lo stato (tuttavia questa è l'idea originale di un brufolo, quindi immagino di non potermi davvero lamentare).
Ora ho una funzione tostring () che stampa lo stato per scopi di debug, ma mi chiedevo se ci fosse una soluzione migliore, per eseguire il debug di questo tipo di costrutto in VisualStudio in particolare, ma una soluzione generale sarebbe migliore.
Grazie
Soluzione
Continua ad espandere l'albero nella finestra Autos o in una delle finestre Watch:
alt text http://www.freeimagehosting.net/uploads/626b4a37ee.png
Altri suggerimenti
Hai provato a trasmettere la variabile in Derivato * nella finestra di controllo?