我希望vector在我的代码中作为返回类型的函数,如
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;
}
}
但它显示错误'无法转换'std :: vector&lt; _Ty&gt;'到'std :: vector&lt; _Ty&gt;' “ 所以请任何人帮助我, 感谢。
答案 0 :(得分:5)
您的函数被声明为返回vector<unsigned int>
,但您实际尝试将结果分配给vector<unsigned long>
。这些是不同的类型,而不是分配兼容。更改您的功能声明:
vector<unsigned long> RMLInfoset::getRML(){
您还需要更改vectDataBlock
的类型。基本上,决定要使用哪种矢量类型,并且保持一致。
答案 1 :(得分:4)
嗯,部分问题是你从未真正在vector v
中构建Myfun
。
std::vector<int> Myfun() {
std::vector<int> v;
return v;
}
编辑:
问题编辑后,仍然存在一个小问题 - 您需要将向量声明为std::vector<int>
,而不仅仅是vector<int>
,如上所述。这是因为vector驻留在std
命名空间中。
答案 2 :(得分:1)
您有三个错误
1)您没有使用#include <vector>
2)它应该是std::vector<int> v;
而不是vector<int> v;
3)您没有发布所有代码。