ISO C ++禁止声明没有类型的“参数”

时间:2016-03-21 03:46:38

标签: c++

我有一个简单的函数,但它在编译时输出上述错误。我查看了类似的帖子,但据我所知,我已将该类型正确地包含在我的声明中。我只是在这里错过了一些简单的东西吗?

部首:

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;
}

1 个答案:

答案 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标准算法函数。