Question

J'ai une classe wrapper qui délègue son travail à un pimpl, et le pimpl est un pointeur sur une classe / interface de base sans données spécialisées à plusieurs niveaux.

Comme ceci:

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();
    }
};

Maintenant, cela fonctionne bien la plupart du temps, mais lorsque je vais dans le débogueur, je ne peux pas voir x, y de la classe Derived (parce que ça peut être n'importe quoi). Normalement, cela n’est pas pertinent, mais quand quelque chose ne va pas, voir l’état de Derived peut être important, mais pimpl obscurcit trop l’état (c’est pourtant l’idée originale d’un pimpl, je suppose donc que je ne peux vraiment pas me plaindre).

Maintenant, j’ai une fonction tostring () qui affiche l’état à des fins de débogage, mais je me demandais s’il existait une meilleure solution pour déboguer ce type de construction dans VisualStudio en particulier, mais une solution générale serait préférable.

Merci

Était-ce utile?

La solution

Continuez simplement à développer l'arborescence dans la fenêtre Autos ou dans l'une des fenêtres de surveillance:

texte alt http://www.freeimagehosting.net/uploads/626b4a37ee.png< a>

Autres conseils

Avez-vous essayé de transtyper la variable avec Derived * dans la fenêtre de surveillance?

scroll top