2012-11-01 3 views
0

멀티 맵 내부에서 객체 참조를 반환 할 수 있습니까?멀티 맵 객체 참조

return &this->noteList.find(key)->second; 

을하지만 그것도 가능하다면 내가 궁금 Non-const lvalue reference to type 'Note' cannot bind to a temporary of type 'Note *' 받고 있어요, 만일 그렇다면, 어떻게이 내가 노력하고있어인가? notelist은 멀티 맵이며 내부에는 Note 개의 개체가 있습니다.

+1

귀하의 표현은 포인터가 아닌 참조를 얻을 수와 같은 객체에 대한 포인터를 얻는다. 나는 당신이'&'을 떨어 뜨릴 필요가 있다고 생각합니다. –

+0

"포인터를 반환 하시겠습니까?" 이미 참고 자료입니다. – Xymostech

+1

메서드의 반환 형식은 어떻게 정의됩니까? –

답변

1

this->noteList.find(key)->second 이미 multimap 안에있는 객체에 대한 참조를 제공합니다 (this->noteList이 멀티 맵인 경우). (즉, 연산자가 오버로드되지 않은 경우)

는 앰퍼샌드 (&)과 그 표현을 접두어로하여

+0

'&'가없는 참조를 이미 반환했다는 것을 몰랐습니다. 감사 – networkprofile

0

그런 다음 다른 사람이 이미 지적한대로 second은 앰퍼샌드없이 (&) 반환하십시오. noteList 또는 방법은 const입니다

경우에, 당신은뿐만 아니라에서 const 수익 유형을 변경해야합니다 예 : 주제 오프

const Note &getRef(Note note) const; 

: 일반적으로, 당신은 또한 산출 const Note &note에 매개 변수를 변경해야합니다 :

const Note &getRef(const Note &note) const; 

또는

Note &getRef(const Note &note); 
+0

const 키워드가 필요한 이유는 무엇입니까? 방금 시도했지만 제대로 작동하지 않습니다. – networkprofile

+0

어느 쪽이 좋습니까? method 나 noteList가 const 인 경우에는'const' 리턴 만 필요하다. 객체가 큰 경우 참조 ('const Note &') 매개 변수는 유용합니다. 그것은 꼭 필요한 것은 아니지만 값으로 전달하는 것보다 효율적입니다. –