函数返回类型是c ++中的向量

时间:2011-08-25 19:43:40

标签: c++ function vector

我希望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;' “ 所以请任何人帮助我, 感谢。

3 个答案:

答案 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)您没有发布所有代码。