範囲内のアイテムを見つけようとしているので、「検索」と呼ばれるテンプレート化された関数に対して複数のテストがあります。
template <typename T> T* find(T *left, T *end, T item);
これは、私が使用している関数プロトタイプであり、最初のテストでは機能しません。
static void TestFind1(void)
{
cout << "***** Find1 *****" << endl;
const int i1[] = {-1, 2, 6, -1, 9, 5, 7, -1, -1, 8, -1};
int size = sizeof(i1) / sizeof(int);
const int *end = i1 + size;
CS170::display(i1, end);
const int item = 9;
const int *pos = CS170::find(i1, end, item);
if (pos != end)
cout << "Item " << item << " is " << *pos << endl;
else
cout << "Item " << item << " was not found" << endl;
}
@ const int *pos "エラー: 関数テンプレート "find" のインスタンスが一致しません 引数リストの引数の型は (const int [11], const int *, const int) と一致します"
このテストで動作する 2 つ目のプロトタイプがありますが、完全にテンプレート化されていないため、const int *pos ではなく int *pos を要求する 2 つ目のテストに失敗します。
2 番目のプロトタイプ:
template <typename T> const int* find(T *left, T *end, const int item);
どのような場合でも最初の関数をテンプレート化する方法がよくわかりません。