2016-04-07 15 views
6

私は、Visual Studio 2015で.natvisファイルを使用してデバッガビジュアライザを作成しています。私のクラスには可能な限り入手したい情報が1つあります。私は、その変数を得るために構文がどのようになるのだろうかと思っています。ここでVisual Studio 2015 Natvisは関数の静的変数をどのように表示できますか?

は、C++コードの簡易版である:デバッガで

class MyClass 
{ 
public: 

    MyClass() {} 

    int getAValue(size_t index) 
    { 
     static std::vector<int> numberVector; 

     if (numberVector.size() <= index) 
     { 
      addSomeNumbersToTheEnd(numberVector); 
     } 

     return numberVector[i]; 
    } 
} 

、私はMyClassのインスタンスにカーソルを合わせると、ベクトルの大きさを確認したいと思いますが、私は知りませんそれを参照する方法(または可能であれば)。ここでビジュアライザの種類は、私が悩みを抱えている場所で<what goes here?>と、次のとおりです。

<Type Name="MyClass"> 
    <DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString> 
</Type> 

実際の問題は、より良い列挙オブジェクトを作成するために、妙に、定期的なテンプレートパターンを含む、はるかに複雑であるので、およそコメントを喜びませんこのやや高尚なシナリオの無駄。

+0

関数スコープを持つ静的オブジェクトを参照する構文や、 'size()'メンバーを呼び出せないので 'std :: vector'のサイズを取得する方法を尋ねていますか? – IInspectable

+0

@IInspectable私は関数スコープで静的オブジェクトを参照しようとしています。私はサイズを取得する方法を知っています。 – Ben

答えて

0

静的関数変数の値が関数外にあることをウォッチウィンドウで確認できる場合は、その関数を使用できます。しかし、AFAIKでは、静的関数変数へのアクセスは関数スコープ内でのみ許可されます。関数内にいないときにそのオブジェクトへのシンボルパスがないので、あなたはSOLです。

回避策は、静的変数をクラススコープに移動し、変数へのシンボリックパスがあり、そこからアクセスすることができます。

関連する問題