[GPG 1 글 1.6] 124페이지 목록 1.6.2

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

비회원

124페이지 목록 1.6.2

Post by 비회원 »

Dereference와 Acquir 멤버함수의 리턴타입이 DATA*인데
함수 내부에서는 std::vector<DATA>의 iterator을 리턴하므로
iterator을 DATA*로 바꿀 수 없다는
컴파일 에러가 뜹니다

어떻게 해야 되나요?
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

몇 권인지요?

그리고 GPG 카탈로그를 통해서 글을 올리셨다면 몇 권 몇번 글인지가 자동으로 등록이 되어야 하는데요. 혹시 버그인지 모르니 죄송하지만 어떤 경로로 질문을 올리셨는지 알려주세요~
비회원

1권 1.6 범용핸들 관리자입니다

Post by 비회원 »

1권 1.6 범용핸들 관리자입니다

메인화면에서 1권->1.6->글쓰기로 등록했습니다
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

이상하네요... 방금 비회원으로도 시험해 봤는데 잘 되는 것 같은데요. 어쨌든 좀 더 살펴보겠습니다.

그리고 질문 자체는...

GPG 1권 때만 해도 컴파일러들이(그리고 프로그래머들이) C++ 표준을 잘 못 지켰던 시절이었던지라 요즘 컴파일러에서 오류가 나는 코드들이 좀 있습니다.

오류 메시지에 암시된 대로... 함수 반환 형식을 vector::iterator 로 바꾸고 호출 쪽 코드도 그에 맞게 수정하면 되지 않을까요. 다행히 C++ 반복자는 C 포인터 연산을 흉내낸 것이라서 코드를 크게 고칠 필요는 없을 것입니다.

p.s. 아, 글쓰기 관련 문제의 원인을 알았습니다.... 미리보기를 거치면 참조 코드가 사라져 버리내요.. 조만간 수정하겠습니다. 이 글의 카탈로그 참조는 수동으로 설정했습니다...
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

클래스의 용도를 생각하면 함수의 반환 형식을 고칠 것이 아니라 return 문에서 DATA*로 강제 형변환(캐스팅)을 해야 할 것 같은데, 표준을 만족하는 방식은 아닙니다. (설사 대부분의 컴파일러들이 vector<T>를 T[]로 구현한다고 해도요.)

템플릿을 한겹 더 씌워서 어떻게 할 수 있을 것 같기도 한데, 그러면 그 글과 예제 전체를 뜯어 고쳐야 할 것 같습니다....
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

류광 wrote:클래스의 용도를 생각하면 함수의 반환 형식을 고칠 것이 아니라 return 문에서 DATA*로 강제 형변환(캐스팅)을 해야 할 것 같은데, 표준을 만족하는 방식은 아닙니다. (설사 대부분의 컴파일러들이 vector<T>를 T[]로 구현한다고 해도요.)

템플릿을 한겹 더 씌워서 어떻게 할 수 있을 것 같기도 한데, 그러면 그 글과 예제 전체를 뜯어 고쳐야 할 것 같습니다....
지금 생각하니 그냥 return &(*it) 로 하면 되겠네요.. 왜 저렇게 복잡하게 생각했는지... :o

p.s. 카탈로그 참조 기능 수정 했습니다. 이제는 미리보기를 거쳐도 잘 등록될 것입니다.
Post Reply