IDebugHostTypeSignature::CompareAgainst メソッド (dbgmodel.h)
CompareAgainst メソッドは、型シグネチャを別の型シグネチャと比較し、2 つのシグネチャの比較方法を返します。 返される比較結果は、次のように定義されている SignatureComparison 列挙体のメンバーです。
[関連 なし] - 比較対象の 2 つのシグネチャまたは型の間にリレーションシップはありません。
あいまい - 一方のシグネチャまたは型があいまいに他方と比較されます。 2 つの型シグネチャの場合、どちらのシグネチャにも等しく一致する可能性のある型インスタンスがあることを意味します。 例として、次に示す 2 つの型シグネチャはあいまいです。
署名 1:
std::pair<*, int>
署名 2:
std::pair<int, *>
型インスタンス std::p air<int であるため、int> は 1 つの均等に一致します (どちらも具象とワイルドカードが 1 つ一致します)。
LessSpecific - 一方のシグネチャまたは型は、他のシグネチャよりも固有ではありません。 多くの場合、これは、より具体的なシグネチャが具象型を持つワイルドカードを持っていることを意味します。 例として、次の最初の署名は、2 番目の署名よりも具体的ではありません。
署名 1:
std::pair<*, int>
署名 2:
std::pair<int, int>
ワイルドカード (*) があるため、2 番目の は具象型 (int) を持っています。
MoreSpecific - 1 つのシグネチャまたは型が他のシグネチャよりも具体的です。 多くの場合、これは、より具体的なシグネチャに具体的な型があり、具体的でないシグネチャにはワイルドカードがあることを意味します。 例として、次の最初の署名は、2 番目の署名よりも具体的です。
署名 1:
std::pair<int, int>
署名 2:
std::pair<*, int>
具体的な型 (int) があるため、2 番目の 型にはワイルドカード (*) があります。
同一 - 2 つのシグネチャまたは型は同じです。
構文
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
パラメーター
typeSignature
比較対象の型シグネチャ。
result
2 つのシグネチャ間の関係を示す値が返されます。関係がないか、同一であるか、一方が他のシグネチャよりも多いか少ないか、あいまいです。 このようなリレーションシップは、SignatureComparison 列挙体のメンバーによって指定されます。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
サンプル コード
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
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |