2016-08-27 11 views
0

タイプTと長さsizeが知られているとします。 配列dataを正常にデバッガに表示する方法を教えてください。ウォッチウィンドウでデバッガで型と長さが既知のvoid *(配列)が自動的に表示される

template<class T>class Container{ 
    void* data; //<-- display it! 
    int size; 
} 

(ビジュアルスタジオ2015)、私は次のように入力してcontainer.dataを表示することができます -

static_cast<T*>(container.data),size  

質問:は、彼らがいずれかの技術です(特にContainerにコードを変更)このプロセスを作るために自動的かつエレガントにする - std :: vectorのように?

container 
+data   (the + button, can click to expand) 
--data[0]  (expanded) 
--data[1] 
...... 
--data[size-1] 

私の最高の手がかりunionを使用することですが、私はわからない - :私はちょうどcontainerを入力することができるかどう

言い換えれば、それはいいだろう、そして時計が表示されます。

+0

「データ」を「T *データ;」と宣言するだけではどうですか? –

+0

私はデフォルトコンストラクタを避けたいので、私は新しい配置を使用します。 http://stackoverflow.com/a/4756306/3577745 – javaLover

+0

@ * javahoverのデフォルトのコンストラクタ* what *? 'data'は' T * 'か' void * 'かどうかにかかわらずポインタです。既定の構築は 'T * data'を宣言するだけで何をする必要がありますか? (ポインタの明白な、デフォルトの構築*のほかに)。 – WhozCraig

答えて

2

VS2015では、カスタム.natvis設定によるデバッグの視覚化のカスタマイズが可能です。

他の機能の中でも、テンプレート化されたクラスをサポートしています。 Type要素のName属性は、テンプレートのクラス名に使用できるワイルドカード文字としてアスタリスク*を受け入れます。視覚化エントリのテンプレートパラメータを参照するには、$T1マクロを使用できます。例はVS2015 Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizersフォルダにあります。

関連する問題