函数返回类型在C++中
问题描述:
我想向量的在我的代码之类的函数的返回类型载体,函数返回类型在C++中
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的< _Ty>‘到'无法从转换’的std ::矢量< _Ty>' 所以请任何一个可以帮助我,谢谢 。
答
好了,问题的部分是,你从来没有真正建立在Myfun
的vector v
。
std::vector<int> Myfun() {
std::vector<int> v;
return v;
}
编辑:
问题编辑后,还有一个小问题 - 需要声明的向量作为std::vector<int>
,不只是一个vector<int>
,如上。这是因为矢量驻留在std
名称空间中。
答
你有三个错误
1)您没有使用#include <vector>
2)它应该是std::vector<int> v;
代替vector<int> v;
3)你没有张贴所有代码。
答
你的函数声明为返回vector<unsigned int>
,但你实际上是试图将结果分配给vector<unsigned long>
。这些是不同的类型,并不是分配兼容的。改变你的函数声明:
vector<unsigned long> RMLInfoset::getRML(){
您还需要改变vectDataBlock
类型。基本上,决定你想使用哪种矢量类型,并且是一致的。
这部作品IDEONE:http://ideone.com/dIJG3 – James
上次编辑后,我会发布一个答案,但格雷格Hewgill已是不错,足以做到这一点。阅读他的答案。 :) – James