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

現在、これはほとんどの場合うまく機能しますが、デバッガーに入ると、派生クラスの 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 に答える