Partager via


IDebugHostTypeSignature ::CompareAgainst, méthode (dbgmodel.h)

La méthode CompareAgainst compare la signature de type à une autre signature de type et retourne la comparaison des deux signatures. Le résultat de comparaison retourné est un membre de l’énumération SignatureComparison qui est définie comme suit :

non liée : il n’existe aucune relation entre les deux signatures ou types comparés.

ambiguë : une signature ou un type compare ambiguëment à l’autre. Pour deux signatures de type, cela signifie qu’il existe des instances de type potentielles qui peuvent correspondre à l’une ou l’autre des signatures également. Par exemple, les deux signatures de type indiquées ci-dessous sont ambiguës :

Signature 1 :

std::pair<*, int> 

Signature 2 :

std::pair<int, *>

Étant donné que l’instance de type std ::p air<int, int> correspond également bien (les deux ont une correspondance concrète et une correspondance générique).

LessSpecific : une signature ou un type est moins spécifique que l’autre. Souvent, cela signifie que la signature moins spécifique a un caractère générique où le plus spécifique a un type concret. Par exemple, la première signature ci-dessous est moins spécifique que la seconde :

Signature 1 :

std::pair<*, int> 

Signature 2 :

std::pair<int, int> 

Parce qu’il a un caractère générique (le *) où le second a un type concret (int).

MoreSpecific - Une signature ou un type est plus spécifique que l’autre. Souvent, cela signifie que la signature la plus spécifique a un type concret où le moins spécifique a un caractère générique. Par exemple, la première signature ci-dessous est plus spécifique que la seconde :

Signature 1 :

std::pair<int, int> 

Signature 2 :

std::pair<*, int> 

Parce qu’il a un type concret (int) où le second a un caractère générique (le *).

identique : les deux signatures ou types sont identiques.

Syntaxe

HRESULT CompareAgainst(
  IDebugHostTypeSignature *typeSignature,
  SignatureComparison     *result
);

Paramètres

typeSignature

Signature de type à comparer.

result

Une indication de la relation entre les deux signatures est retournée ici : qu’elles soient non liées ou identiques, l’une est plus ou moins spécifique que l’autre, ou si elles sont ambiguës. Cette relation est donnée par un membre de l’énumération SignatureComparison.

Valeur de retour

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

exemple de code

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
}

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDebugHostTypeSignature