2011-08-25 5 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 :: vector < _Ty>' ' 그래서 제발 도와주세요, 고마워.

답변

4

글쎄, 문제의 일부는 실질적으로 vector vMyfun에 만들지 않은 것입니다.

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

편집 : 여전히 작은 문제가

질문 편집 후 - 당신이 위와 같이하는 std::vector<int>로 다만 vector<int>를 벡터를 선언해야합니다. 벡터가 std 네임 스페이스에 있기 때문입니다.

+0

이것은 IDEONE에서 작동합니다 : http://ideone.com/dIJG3 – James

+0

마지막 편집 후 답변을 게시 하겠지만 Greg Hewgill은 이미 그렇게 할만 큼 좋았습니다. 그의 대답을 읽으십시오. :) – James

1

당신은 당신은) #include <vector>

2를 사용하지 않은 그것은 당신이 당신의 모든 코드를 게시되지 않은 std::vector<int> v; 대신)

3 vector<int> v;이어야합니다 세 가지 오류

1)가 있습니다.

5

함수가 vector<unsigned int>을 반환하지만 실제로는 인 결과로 vector<unsigned long>에 결과를 할당하려고합니다. 이들은 서로 다른 유형이며 할당이 호환되지 않습니다. 함수 선언 변경 :

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

또한 vectDataBlock 유형을 변경해야합니다. 기본적으로 사용할 벡터 유형을 결정하고 은 일관성을 유지하십시오..