我有一个简单的函数,但它在编译时输出上述错误。我查看了类似的帖子,但据我所知,我已将该类型正确地包含在我的声明中。我只是在这里错过了一些简单的东西吗?
部首:
int LinearSearch (const vector <Die> & searchVector, const <Die> & targetVal);
实现:
int Game::LinearSearch (const vector <Die> & searchVector, const <Die> & targetVal) {
// Simple linear search function which will return the index of targetVal in the vector
// Returns null if the value isn't found
for (int i=0; i < searchVector.size(); i++) {
if (targetVal.pips == searchVector[i].pips) return i;
}
return nullptr;
}
答案 0 :(得分:4)
第二个参数上的尖括号是错误的,因为它们不像第一个参数那样专门化模板化的类(std::vector<Die>
是I tested it using this resource模板化类的特化),所以你需要在第二个参数中删除它们。
此外,您无法将nullptr
作为int
返回,即使您可能会这样做也是错误的。你的循环返回vector
中匹配元素的索引,因此nullptr
可能会被误认为索引0.找不到匹配项时返回的更合适的值将是-1。
int LinearSearch (const vector<Die> &searchVector, const Die &targetVal);
int Game::LinearSearch (const vector<Die> &searchVector, const Die &targetVal) {
// Simple linear search function which will return the index of targetVal in the vector
// Returns -1 if the value isn't found
for (int i=0; i < searchVector.size(); i++) {
if (targetVal.pips == searchVector[i].pips) return i;
}
return -1;
}
话虽如此,您应该查看std::vector
标准算法函数。