Metodo IDebugHostTypeSignature::CompareAgainst (dbgmodel.h)
Il metodo CompareAgainst confronta la firma del tipo con un'altra firma di tipo e restituisce la modalità di confronto delle due firme. Il risultato del confronto restituito è un membro dell'enumerazione SignatureComparison definita come segue:
Non correlato: non esiste alcuna relazione tra le due firme o i tipi confrontati.
Ambiguo : una firma o un tipo confronta in modo ambiguo l'altro. Per due firme di tipo, ciò significa che sono presenti potenziali istanze di tipo che potrebbero corrispondere ugualmente a entrambe le firme. Ad esempio, le due firme di tipo illustrate di seguito sono ambigue:
Firma 1:
std::pair<*, int>
Firma 2:
std::pair<int, *>
Poiché l'istanza del tipo std::p air<int, int> corrisponde ugualmente a uno (entrambi hanno una corrispondenza concreta e una corrispondenza con caratteri jolly).
LessSpecific : una firma o un tipo è meno specifico dell'altro. Questo significa spesso che la firma meno specifica ha un carattere jolly in cui quello più specifico ha un tipo concreto. Ad esempio, la prima firma seguente è meno specifica del secondo:
Firma 1:
std::pair<*, int>
Firma 2:
std::pair<int, int>
Poiché ha un carattere jolly (*) dove il secondo ha un tipo concreto (int).
MoreSpecific : una firma o un tipo è più specifico dell'altro. Questo significa spesso che la firma più specifica ha un tipo concreto in cui quello meno specifico ha un carattere jolly. Ad esempio, la prima firma seguente è più specifica del secondo:
Firma 1:
std::pair<int, int>
Firma 2:
std::pair<*, int>
Poiché ha un tipo concreto (int) in cui il secondo ha un carattere jolly (*).
Identico : le due firme o i tipi sono identici.
Sintassi
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
Parametri
typeSignature
Firma del tipo da confrontare.
result
In questo caso viene restituita un'indicazione della relazione tra le due firme, indipendentemente dal fatto che non siano correlate o identiche, una sia più o meno specifica dell'altra o sia ambigua. Tale relazione viene data da un membro dell'enumerazione SignatureComparison.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Commenti
Codice di esempio
ComPtr<IDebugHostTypeSignature> spSig1; /* get a type signature */
ComPtr<IDebugHostTypeSignature> spSig2; /* get a second type signature */
SignatureComparison compResult;
if (SUCCEEDED(spSig1->ComapreAgainst(spSig2.Get(), &compResult)))
{
// compResult indicates how the two signatures are related (if at all)
// std::pair<int, *> and std::pair<*, int> would be related ambiguously
// std::pair<int, *> would be more specific than std::pair<*, *>
// std::pair<int, int> and std::pair<float, float> would be unrelated
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |