2011-08-25 86 views
-1

我想向量的在我的代码之类的函数的返回类型载体,函数返回类型在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>' 所以请任何一个可以帮助我,谢谢 。

回答

4

好了,问题的部分是,你从来没有真正建立在Myfunvector v

std::vector<int> Myfun() { 
    std::vector<int> v; 
    return v; 
} 

编辑:

问题编辑后,还有一个小问题 - 需要声明的向量作为std::vector<int>,不只是一个vector<int>,如上。这是因为矢量驻留在std名称空间中。

+0

这部作品IDEONE:http://ideone.com/dIJG3 – James

+0

上次编辑后,我会发布一个答案,但格雷格Hewgill已是不错,足以做到这一点。阅读他的答案。 :) – James

1

你有三个错误

1)您没有使用#include <vector>

2)它应该是std::vector<int> v;代替vector<int> v;

3)你没有张贴所有代码。

5

你的函数声明为返回vector<unsigned int>,但你实际上是试图将结果分配给vector<unsigned long>。这些是不同的类型,并不是分配兼容的。改变你的函数声明:

vector<unsigned long> RMLInfoset::getRML(){ 

您还需要改变vectDataBlock类型。基本上,决定你想使用哪种矢量类型,并且是一致的