呼叫没有匹配功能?

时间:2011-12-04 18:21:10

标签: c++ templates function

无法弄清楚为什么我会收到此错误:

error: no matching function for call to ‘write_vector(int&)’
    template <typename T>
    void write_vector(const vector<T>& V)
    {
       cout << "The numbers in the vector are: " << endl;
      for(int i=0; i < V.size(); i++)
        cout << V[i] << " ";
    }

    int main()
    {
      int input;
      vector<int> V;
      cout << "Enter your numbers to be evaluated: " << endl;
      cin >> input;
      V.push_back(input);
      write_vector(input);
      return 0;
    }

3 个答案:

答案 0 :(得分:1)

write_vector(V); //V is std::vector<int>

而不是

write_vector(input); //input is int

请尝试了解错误消息。它提供了很多关于代码中出错的提示。

此外,您似乎已在代码中的某处写了using namespace std。不要这样做。删除该行。然后使用std::vector使用vector。这是更好的编码风格,可以避免using namespace std引起的许多问题,特别是在大型项目中。

答案 1 :(得分:0)

将输入变量传递给函数,模板函数需要一个向量。尝试传入V insted

答案 2 :(得分:0)

您使用错误的参数调用write_vector函数。在您刚发布的代码中,您使用'input'作为参数调用该过程,但'input'是'int'类型而不是'vector'。