2013-03-15 8 views
0

저는 C++로 다시 작업하고 있으며, 함수에서 포인터를 매개 변수로 보내는 데 의심의 여지가 있습니다.포인터 문제가 상수로 전송됩니다.

포인터로 가리키는 객체가 언제든지 수정되지 않는다는 것을 알기 위해 함수에 객체 포인터를 보내고 싶지만 const 상태로 보내고 싶었습니다. 그래서 저는 이렇게했습니다 :

int hi(const SomeObject* so) 
{ 
    so->SayHi(); 
} 

SomeObject* so = new SomeObject(); 
hi(so); 

그러나 작동하지 않았습니다. 그것은 호환되지 않는 타입을 말합니다 ...

또한 함수에 const를 추가하면 다른 것입니까? Like :

int hi(const SomeObject* so) const; 

누구나 내게이 의심을 설명 할 수 있습니까? 감사합니다

+1

방법 그걸 부르니? 너는 무엇을 지나가고 있는가? 전체 오류는 무엇입니까? –

+0

"호환 가능한 유형"이라고 표시되어 있습니까? 그건 나에게 컴파일러 오류처럼 들리지 않는다. 어쩌면 우리는 실제 * 코드와 실제 오류를 표시해야합니다. :) – jalf

+1

전체 오류를 포함하도록 질문을 편집하고 호출중인 _how_ 및 통화에서 사용하는 변수를 선언하는 방법을 표시하십시오. –

답변

3
int hi(const SomeObject* so) 

당신은 SomeObject을 상수로 선언하셨습니다. sayHi가 const로 선언되지 않은 경우 컴파일러 오류가 발생합니다.

class SomeObject { 
    void sayHi(void) const; 
} 

당신의 의도는 다음과 같아야합니다 (이 가리키는 객체가 아니라) 포인터 상수를 만드는 것이 었습니다 경우

int hi(SomeObject* const so) 

Here 당신이 포인터와 상수 포인터에 대해 읽을 수 있습니다