2017-03-27 33 views
0

저는 벡터를 함수로 참조로 전달하고 함수 내에서 벡터를 수정하는 간단한 작업을 수행하려고합니다. 그러나, 나는 다음과 같은 예제를 꽤 이해할 수없는 오류를 얻을 :함수에 대한 참조로 벡터 전달하기

// data.h 
class data { 
public: 
    std::string a; 
    double b; 
    uint8_t c; 
}; 

우리는 MainWindow를 클래스에서 이러한 데이터 객체의 벡터합니다

나는 말썽 꾸러기 기능을 가지고 아래
// MainWindow.h 
class MainWindow { 
public: 
    std::vector<data> vec; 
    void needs_vec(std::vector<data> &vec); 
}; 

, 모든 것이 모이는 MainWindow 객체의 생성자와 함께.

나는 또한 rvalue 참조로 놀아 보았지만 비슷한 결과를 얻었습니다 : 해독 할 수없는 20 페이지 오류 메시지.

+0

'vec.double get_a_number =() '이 큰 가리키는 화살표 같다. – DeiDei

답변

1

클래스 data에는 double이라는 double 값이 없지만 b이라는 값이 있습니다. , 또한

void MainWindow::needs_vec(std::vector<data> &vec) { 
    for (auto &vec: vec) {  // Change the name here 
    vec.b = get_a_number(); 
    } 
} 

당신은 }; 닫는 중괄호와 세미콜론, 함께 수업을 닫는 :

는 변경 사항을 적용?

예컨대

// data.h 
class data { 
public: 
    string a; 
    double b; 
    uint8_t c; 
} /* including ";"?? */ 
+0

C++ 에서처럼 동일한 이름을 사용하는 것은 실제로 문제가되지 않습니다. – DeiDei

+0

혼동하지 않는 컴파일러는 컴파일러뿐입니다. – stark

+0

괜찮습니다. 용서 받았다. 고맙습니다! – 0xDEFACED