C++ 函数返回类型是C++中的向量
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7196264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
function return type is vector in c++
提问by yogesh patel
i want vector as return type of function in my code like,
我想要向量作为我的代码中函数的返回类型,例如,
class SocketTransportClient{
void sendData(RMLInfoset *info){
vector<unsigned long>::iterator blockIterator;
vector<unsigned long> vectBlock=info->getRML(); // error : error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty>'
}
}
class RMLInfoset {
vector<unsigned int> RMLInfoset::getRML(){
return vectDataBlock;
}
}
but it show an error 'cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty>' ' so please any one help me, Thanks.
但它显示错误“无法从 'std::vector<_Ty>' 转换为 'std::vector<_Ty>' ' 所以请任何人帮助我,谢谢。
回答by Greg Hewgill
Your function is declared to return vector<unsigned int>
but you're actuallytrying to assign the result to a vector<unsigned long>
. Those are different types and not assignment-compatible. Change your function declaration:
您的函数被声明为返回,vector<unsigned int>
但您实际上是在尝试将结果分配给vector<unsigned long>
. 这些是不同的类型,并且不兼容分配。更改您的函数声明:
vector<unsigned long> RMLInfoset::getRML(){
You will also need to change the type of vectDataBlock
. Basically, decide which vector type you want to use and be consistent.
您还需要更改vectDataBlock
. 基本上,决定要使用的向量类型并保持一致。
回答by James
Well, part of the problem is that you never actually build the vector v
in Myfun
.
好吧,部分问题在于您从未真正构建过vector v
in Myfun
.
std::vector<int> Myfun() {
std::vector<int> v;
return v;
}
EDIT:
编辑:
After the question edit, there is still a small problem - you need to declare the vector as a std::vector<int>
, not just a vector<int>
, as above. This is because vector resides in the std
namespace.
在问题编辑之后,还有一个小问题——你需要将向量声明为 a std::vector<int>
,而不仅仅是 a vector<int>
,如上所述。这是因为 vector 驻留在std
命名空间中。
回答by john
You have three errors
你有三个错误
1) You didn't use #include <vector>
1)你没有使用 #include <vector>
2) It should be std::vector<int> v;
instead of vector<int> v;
2)它应该std::vector<int> v;
代替vector<int> v;
3) You didn't post all of your code.
3)您没有发布所有代码。