2017-10-04 77 views
-3

有两个功能:如何调用重载函数中的函数

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

但是,当我尝试从功能vector<string> func1(vector<string> name1)调用函数string func1(string name1)我得到一个错误:

Error C2664 "std::vector> func1(std::vector>)": it is impossible to convert>argument 1 from "string" to "std::vector,std::allocator<_Ty>>"

可能是什么问题?

+3

我希望看到一个SSCCE。你也不能从想返回int的函数返回int []。事实上,当我创建一个独立的示例时,[完全无法重现](http://coliru.stacked-crooked.com/a/ee09eb4194507405)。 –

+1

请尝试创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)向我们展示。除了语法等明显的错误之外,行为不应该是你声称的行为。 –

+2

第二个函数不会编译。返回类型是“int”,但是它返回一个指向局部变量的指针('out')。而'int out []'在C++中是一个无效的声明。 – Peter

回答

0

有在你的代码两个不同的问题:

  1. func1(vector<string>)你叫func1(string),但尚未定义的功能。要解决此问题,您可以在vector<string> func1(vector<string> name1)之前放置函数原型string func1(string name1);,或者可以在vector<string> func1(vector<string> name1)之前放置整个func1(string)函数。

  2. in main()你叫vector_out.push_back(func1(vector_in));func1这里是func1(vector<string>)函数,但是这个函数的返回类型是vector<string>。现在你打电话vector_out.push_back与一个参数是不是stringvector<string>没有这样的功能。

您仍然需要澄清问题并指定vector_out最后应包含的内容。