2

我有一个包装类,它将其工作委托给一个 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();
    }
};

现在这在大多数情况下都可以正常工作,但是当进入调试器时,我无法查看 Derived 类的 x,y (因为它可以是任何东西)。通常这是无关紧要的,但是当出现问题时,查看 Derived 的状态可能很重要,但是 pimpl 过于模糊了状态(但是这是 pimpl 的原始想法,所以我想我真的不能抱怨)。

现在我有一个 tostring() 函数,可以打印出状态以进行调试,但想知道是否有更好的解决方案,特别是在 VisualStudio 中调试这种结构,但一般的解决方案会更好。

谢谢

4

2 回答 2

4

您是否尝试在监视窗口中将变量转换为 Derived*?

于 2009-03-06T05:16:12.223 回答
2

只需继续在 Autos 窗口或 Watch 窗口之一中展开树:

替代文字 http://www.freeimagehosting.net/uploads/626b4a37ee.png

于 2009-03-06T05:55:34.203 回答