const Class *의 컴파일 에러
글쓴이: dictions / 작성시간: 월, 2010/06/07 - 9:58오전
안녕하세요.
const AbstractClass *c = new ConcreteClass("argstring"); c->execute();
error C2662: 'AbstractClass::execute: 'this' 포인터를 'const AbstractClass'에서 'AbstractClass &'(으)로 변환할 수 없습니다. 1> 변환하면서 한정자가 손실됩니다.
이 녀석 컴파일이 안되는군요.
AbstractClass *c = new ConcreteClass("argstring"); c->execute();
이 녀석은 됩니다.
결국 const한정자로 Class *생성할 때가 문제라는 건데...
안 될 이유가 있나요?
(문제의 해결은 const때면 되지만, const붙여서 쓰고싶을 수도 있으니까요.. 궁금하네요 ^^)
여러분의 조언을 구합니다.
감사합니다.
Forums:
const_cast를
const_cast를 사용하거나, new 연산자를 하나 만들어 주면 될것같네요.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
execute() 멤버 함수가
execute() 멤버 함수가 const 타입이면 문제 없이 실행되지 않을까요?
void execute() const {
...
}
execute()는 const함수 입니다.
네, 이미 저 코드에서
입니다.
저 코드만으로는 알 수가 없군요.
제 설명이 부족했습니다.
죄송하고, 함께 고민해주셔서 감사합니다. ^^
다음과 같이 했는데
다음과 같이 했는데 컴파일이 안된다는 것인가요? 그리고, 올리신 컴파일 에러는 객체 생성이 문제가 아니라 exec 호출이 문제가 된다는 것입니다. exec에 const를 빼면 당연히 상수 객체 포인터의 exec를 호출할 수 없는 것이고요.
댓글 달기