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

yog*_*tel -1 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它显示错误'无法从'std :: vector <_Ty>'转换为'std :: vector <_Ty>''所以请任何人帮助我,谢谢.

Jam*_*mes 5

好吧,部分问题在于您从未真正构建过vector vin Myfun.

std::vector<int> Myfun() {
  std::vector<int> v;
  return v;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

在问题编辑之后,还有一个小问题——你需要将向量声明为 a std::vector<int>,而不仅仅是 a vector<int>,如上所述。这是因为 vector 驻留在std命名空间中。


Gre*_*ill 5

您的函数被声明为返回,vector<unsigned int>但您实际上是在尝试将结果分配给a vector<unsigned long>.这些是不同的类型,不兼容分配.更改您的功能声明:

  vector<unsigned long> RMLInfoset::getRML(){
Run Code Online (Sandbox Code Playgroud)

您还需要更改类型vectDataBlock.基本上,决定要使用哪种矢量类型并保持一致.