CPP const키워드.. 그리고 참조에 대해...
글쓴이: philossh / 작성시간: 화, 2005/08/16 - 12:53오전
template<class T> class CArray { public: T& operator[](const int idx); }; class TelBook { CArray<Person*> list; public: Void print(const int i) const { list[i]->print(); } }
TelBook::list의 속성을 변경하지 않을 의도로 const를 썼지만..
-> 이항 '[' : 왼쪽 피연산자로 'const CArray<T>' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.
이런 소리를 하네요..
(const keyword를 빼면 정상적으로 동작합니다..)
또한 CArray의 [] 연산자 오버로딩에 const키워드를 붙이면 위의 부분에 한해서는 정상 동작 하지만..
list[1] = xxx;
라는 식이 성립이 안되기때문에 이와 같은 식을 한번이라도 사용하면 에러가 납니다..
흠..
왜 이런식으로 되는지 궁금해서 올려봅니다...
그리고 어떤식으로 해결하는지??
(그냥 TelBook::print()의 const키워드를 빼고 쓰나요?)
cpp너무 어려워요.. :cry:
다만 지금 Tool을 vc.net 을 쓰는데..
VS.NET에서만 발생하는 오류일지도 모른다는 생각이 문득 드는군요..
Forums:
Re: CPP const키워드.. 그리고 참조에 대해...
[] operator가 const로 되어있지 않기 때문입니다.
최적 솔루션일지는 잘 모르겠지만
const T& operator[](const int idx) const;
란 메쏘드도 정의해 주면 될겁니다.
댓글 달기