2013-12-19 3 views
0

이 맞습니까? 그것은 제 컴파일러로 컴파일되지만 AIX와는 다르다고 들었습니다.C++ const- 캐스트 참조

내 코드를 AIX 플랫폼에서 컴파일하려면 어떻게해야합니까? (Ctrl-C Ctrl-V로 비 const 버전을 다시 구현하십시오).

+0

: 그것은 단지 명시 적 변환을 수 있기 때문에 좀 더 안전하게,

return funct(static_cast<ConstIterator>(iter)); 

을하거나 수 있도록하지만, iteratorconst_iterator로 변환합니다. 컴파일러는 const 객체가 아닌 const가 아닌 객체에 대해서도 const 버전을 호출합니다. AIX에서 컴파일러에 대해 알지 못한다. 그러나 문제가 있음을 보여주는 코드가 없다면 실제로 진단 할 수 없다. –

답변

2

const_cast은 변수의 const-ness를 제거하는 데 사용됩니다. 즉, const A& a 인 경우 A& b = const_cast<A&>(a)을 작성할 수 있습니다. 이제 b을 수정하거나 비 const 메소드를 호출 할 수 있습니다.

이 경우 iteratorconst_iterator을 구성하고 const_cast을 사용하지 않아도 항상 가능합니다. 이 두 가지 유형이 있으며 const_iterator이 생성 될 수 있음을 염두에 두십시오. iterator C++ const-ness는이 경우별로 할 일이 없습니다.

2

iteratorconst_iterator은 (일반적으로) 다른 유형이므로 참조를 전송할 수 없습니다. 당신은 const가 아닌 버전이 필요하지 않습니다

ConstIterator citer = iter; 
return funct(citer);