대부분 잘 작동하는 클래스로 작업하고 있지만 재귀 함수를 사용 중일 수있는 일부 기능을 수행 중이므로 NULL
포인터를 클래스 형식의 컨트롤로 반환 할 수 있습니다. 짧은 내 클래스 객체에 너무 오래 이야기를 NULL
포인터를 할당 할 수 :할당 연산자 C++ NULL 할당
Thing& Thing::operator=(Thing * _other){
if (_other == NULL){
*this = NULL; // compiler throws here
return *this;
}
// does other assignment work
return *this;
}
내 컴파일러 VS2010는 this
는 I-값 아니라고 발생합니다. 그렇다면 값을 NULL
으로 설정하는 방법 또는 내부에서 항목을 NULL로 설정할 수 있습니까?
EDIT : 수정 된 this
~ *this
이제는 어떤 이유로 프로그램이 할당 연산자에 대한 무한 호출로 중단됩니다. 무슨 일이 일어나고 있는지 전혀 모른다
'* this = NULL'은 연산자를 다시 호출합니다. if는 연산자를 호출합니다. 복사 할당 연산자를 쓰려면 const 참조 나 값을 인수로 받아야합니다 (참조 : 카피 - 스왑 (copy-and-swap) 관용구). –
복사 생성자를 사용하지 않는 이유는 무엇입니까? – Alex
@Alex와 유사한 것은 복사 생성자에서 수행되어야합니다. 왜냐하면 대부분의 복사 생성자는 단순히 객체 arg을 복사하기 때문에 NULL 데이터를 복사하려고하면 대부분의 디버거/실행 파일이 충돌하거나 실패합니다. – gardian06