如何在重载函数内调用函数

时间:2017-10-04 09:46:07

标签: c++ overloading

有两个功能:

#include "stdafx.h"
#include <string.h>
#include <vector>

uning namespace std;


vector<string> func1(vector<string> name1){
    vector<string> out;

    //do something and call our first function
    for(int i=0; i<100;i++){    
        out.push_back(func1(name1[i]));
    }
    return out;
}


string func1(string name1){
    string out;

    //do something

    return out;
}

int main(){
vector<string> vector_in;
vector<string> vector_out;
//generate text
for (int i = 0; i < 100; i++) {
    vector_in.push_back(string("string"));
}
for (int i = 0; i < 100; i++) {
    vector_out.push_back(func1(vector_in));
}

但是当我尝试从函数string func1(string name1)调用函数vector<string> func1(vector<string> name1)时,我收到错误:

  

错误C2664“std :: vector&gt; func1(std :: vector&gt;)”:无法将&gt;参数1从“string”转换为“std :: vector,std :: allocator&lt; _Ty&gt;&gt;”

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

您的代码中存在两个明显的问题:

    {li>

    func1(string)中调用string func1(string name1);,但函数尚未定义。要更正此问题,您可以将函数原型vector<string> func1(vector<string> name1)放在func1(string)之前,也可以将整个vector<string> func1(vector<string> name1)函数放在main()之前。

    vector_out.push_back(func1(vector_in));中,您致电func1
  1. func1(vector<string>)这里是vector<string>函数,但此函数的返回类型为vector_out.push_back。现在,您使用不是stringvector<string>的参数调用vector_out,并且 没有此类函数。

  2. 您仍需要澄清问题,并指明最后应包含的template< typename T > void foo( T<int> ) { // do something }