2009-03-06 17 views
2

私は、その作業をpimplに委譲するラッパークラスを持っています.pimplは、いくつかの異なる方法で特殊化されたデータのないベースクラス/インターフェースへのポインターです。このようC++で抽象(?)の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(); 
    } 
}; 

は今、これはほとんどの時間を正常に動作しますが、デバッガに入るとき(それは何もすることがなかったので)私は、派生クラスのYをXを表示することはできません。通常、これは無関係ですが、何かが間違っているとDerivedの状態を見ることが重要になることがありますが、ピンプルは状態をあまりあいまいにします(しかし、これはピンプルの元々の考えですので、本当に不平を言うことはできません)。

私は、デバッグ目的で状態を出力するtostring()関数を持っていますが、特にVisualStudioのこの種の構造をデバッグするためのより良い解決法があるのだろうかと疑問を抱いていましたが、

おかげ

答えて

2

ただ、自動車のウィンドウまたはウォッチウィンドウの1つのツリーを展開しておく:

alt text http://www.freeimagehosting.net/uploads/626b4a37ee.png

+0

ええと、大丈夫ですが、実際のコードはこれよりも複雑で、うまくいきません...なぜ動作しないのか分かりません... –

+0

コンパイル単位インプラスクラス宣言の可視性を持っていない場合、それは表示されません –

+0

そこに行く!だからこそ、それはうまくいきません。 –

4

あなたは、ウォッチウィンドウに派生*に変数をキャストしようとしたことがありますか?

+0

うん、これはこれまでのところ、良い動作しますが、うまくいけば、誰かが魔法の解決策を持っている:) –

+0

何がだろうもっと魔法? – jmucchiello

関連する問題