내 자신의 구조체 유형이 X
인 경우 을 암시 적으로 다른 유형, 예를 들어 int*
으로 변환 할 수있는 암시 적 캐스트 연산자를 정의 할 수 있습니까? 참조 간의 변환이 쉽지만 포인터에 대해 수행하는 방법을 찾을 수 없습니다. 이 같은 것은 :포인터 사이의 캐스트 연산자
struct X {
int theContent;
operator int&(){ return theContent; }
operator const int&() const { return theContent; }
}
int main(){
X x;
X* x2=&x;
// this should work, but it doesn't
int* i=x2;
}
나는 비슷한 질문에 이미 대답했다고 생각한다. [here] (http://stackoverflow.com/questions/6802978/implement-conversion-operator-for-pointer). 포인터는 사용자 정의 클래스 유형이 아니므로 Answer는 "no"입니다. 따라서 캐스트 연산자를 추가 할 수 없습니다. – yeputons
'X *'를'int *'로 캐스팅하는 연산자가 없지만'X'에서'int &'로만 변환합니다. 'int * i = & x2-> 연산자 int를 사용하여 연산자를 명시 적으로 호출 할 수 있습니다. &();' –
@SimonKraemer : 음, * 암시 적 캐스트라고하지는 않겠습니다.). – gexicide