Как получить отладочную информацию для абстрактного (?) Pimpl в C ++? - PullRequest
2 голосов
/ 06 марта 2009

У меня есть класс-оболочка, который делегирует свою работу pimpl, и pimpl является указателем на базовый класс / интерфейс без данных, которые специализируются несколькими различными способами.

Как это:

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

Теперь это работает нормально в большинстве случаев, но при входе в отладчик я не могу просмотреть x, y класса Derived (потому что это может быть что угодно). Обычно это не имеет значения, но когда что-то идет не так, видение состояния Derived может быть важным, но pimpl слишком сильно затеняет это состояние (хотя это оригинальная идея pimpl, поэтому я не могу жаловаться).

Теперь у меня есть функция tostring (), которая печатает состояние для целей отладки, но мне было интересно, есть ли лучшее решение для отладки такого рода конструкции в частности в VisualStudio, но общее решение будет лучше. 1008 *

Спасибо

Ответы [ 2 ]

4 голосов
/ 06 марта 2009

Вы пытались привести переменную в Derived * в окне просмотра?

2 голосов
/ 06 марта 2009

Просто продолжайте расширять дерево в окне Autos или одном из окон Watch:

альтернативный текст http://www.freeimagehosting.net/uploads/626b4a37ee.png

...