제가 지금 충돌 검출을 위한 클래스를 작성 중인데요

// 점과 구 사이의 거리 구함(점이 별도로 지정되지 않으면 원점과 거리 체크)
float CIntersect::DistancePoint2Sphere( const CSphere *s, const D3DXVECTOR3 *p )
{
        D3DXVec3Subtract( &temp_result, s->GetCenter(), p );
        
        return ( D3DXVec3Length( &temp_result ) - ( s->GetRadius() ) );
}

이런식으로 코드를 짰는데

컴파일 하니

error C2662: 'CSphere::GetCenter' : 'this' 포인터를 'const CSphere'에서 'CSphere &'(으)로 변환할 수 없습니다.
error C2662: 'CSphere::GetRadius' : 'this' 포인터를 'const CSphere'에서 'CSphere &'(으)로 변환할 수 없습니다.

라는 에러가 발생하네요.

CSphere에서 center값이 private라 GetCenter()로 중심값을 받아오는 건데

center값을 public으로 바꾸고 직접 받아오니 또 문제가 없네요;;

const를 빼볼까 했더니 D3DXVec3Subtract가 꼭 const형 변수를 요구해서 뺄수도 없고;;


안쓰던 const를 써서 그런지 원인이 뭔지 감이 안잡히네요.

아무래도 제가 모르는 const의 특성 때문인것 같은데

가르쳐 주실분 안 계신가요
emoticon_04emoticon_04emoticon_04