Sto scrivendo visualizzatori di debugger usando un file .natvis in Microsoft Visual Studio 2015. C'è un pezzo di informazione nella mia classe che mi piacerebbe ottenere, se possibile. Mi sto chiedendo quale sarebbe la sintassi per ottenere quella variabile.Come può Visual Studio 2015 Natvis visualizzare una variabile statica di funzione?
Ecco una versione semplificata del codice C++:
class MyClass
{
public:
MyClass() {}
int getAValue(size_t index)
{
static std::vector<int> numberVector;
if (numberVector.size() <= index)
{
addSomeNumbersToTheEnd(numberVector);
}
return numberVector[i];
}
}
Nel debugger, vorrei vedere la dimensione del vettore, quando mi passa il mouse sopra un'istanza di MyClass, ma non so come fare riferimento (o se è addirittura possibile). Ecco il tipo di visualizzatore, con <what goes here?>
nel luogo in cui sto avendo problemi:
<Type Name="MyClass">
<DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString>
</Type>
Il problema reale è molto più complicato, che coinvolge il motivo template curiosamente ricorrenti per creare migliori oggetti di enumerazione, quindi per favore non commenti su l'inutilità di questo scenario un po 'inventato.
Si sta richiedendo la sintassi per fare riferimento a un oggetto statico con scope funzione, o come ottenere una dimensione 'std :: vector', dal momento che non è possibile richiamare il membro' size() '? – IInspectable
@IInspectable Sto provando a fare riferimento a un oggetto statico con ambito di funzione. So come ottenere la taglia. – Ben