다음과 같이 create 메소드가 있습니다.이 메소드는 return (null 포인터 인 경우)에서 오류를 가져 오려고합니다. 그러나 나는이 오류 처리 옵션이며, 함수 호출에 대한 요구 사항 싶지 않아. 선택적 오류 처리
코드 : 그래서class foo {
foo() {...};
public:
~foo();
static foo* createFoo(int aparam = 42, int bparam = 10, int& error = ?) {
afoo* = new foo();
if (!afoo) {
error = 11;
return 0; //NULL
}
...
return afoo;
}
}
내가 다음 중 하나를 사용하기로 결정 할 수 있습니다 (내 실제 코드에서)이 시점에서
foo* myfoo = createFoo(42);
if (!myfoo) { ... }
또는
int errorcode = 0;
foo* myfoo = createFoo(42, 10, errorcode);
...
, 내가 그냥 null 포인터 (ref 대신)를 사용하고 오류를주기 전에 createFoo 코드에서 유효성을 확인하는 것입니다.
내 생각에에 대한 모범 사례에 관심이 있습니다.
비록 내가 ur 질문을 잘 이해하지 못했지만, 나는 솔루션이 오류없이 버전으로 ur 함수를 오버로드하는 것에 있다고 생각한다. – AbiusX
@AbiusX 이것이 최선의 대안이라고 생각합니다. 다른 의견을 찾고 있습니다. – dcousens
'afoo'는 _never_ null이 될 것입니다. 'new'는 할당이 실패하면'std :: bad_alloc'을 던지고 실패하면'foo'의 생성자가 예외를 던집니다. –