有两个功能:
#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;”
可能是什么问题?
答案 0 :(得分:0)
您的代码中存在两个明显的问题:
在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
。 func1(vector<string>)
这里是vector<string>
函数,但此函数的返回类型为vector_out.push_back
。现在,您使用不是string
但vector<string>
的参数调用vector_out
,并且 没有此类函数。
您仍需要澄清问题,并指明最后应包含的template< typename T >
void foo( T<int> )
{
// do something
}
。