2011-11-04 2 views
4

나는 C++에 비교적 새로운 해요,이 선언은 나를 혼란이 있습니다클래스에서 정의한 "연산자 X()"는 어떻게 사용할 수 있습니까?

Service.h : 여기 나와있는 생성자가 아닌 다른 수단을 통해 ServiceHandle 객체를 생성 한

class ServiceHandle { 
    public: 
    ServiceHandle(SC_HANDLE h) : handle(h) {} 
    ... 
    operator SC_HANDLE() const {return handle;} 
    protected: 
    SC_HANDLE handle; 
}; 

. SC_HANDLEChangeServiceConfig으로 전달하고 싶습니다. 어떻게받을 수 있습니까? 나는 그것이 운영자와 관련이 있다고 가정하고 있지만 그것을 사용하는 방법을 찾을 수는 없습니다.

답변

4

ServiceHandle 유형의 객체는 표현식이 SC_HANDLE 일 것으로 기대됩니다. 연산자은 주조 연산자가 SC_HANDLE 인 것을 말합니다. 이 연산자는 자동으로 "사용"됩니다.

0

캐스팅 오퍼레이터입니다. 그러면 다음과 같이됩니다 :

ServiceHandle s(some handle); 
SC_HANDLE h = (SC_HANDLE)s; 
+2

'SC_HANDLE h = s;'로 충분합니다. 화재와 같은 C 스타일의 캐스트는 피하십시오. –

+0

동의 함. C 스타일의 캐스트를 쓰면 약간 아팠습니다. – RobH

관련 문제