4
나는 그것을 추측하고 싶다. C++에 다음과 같은 어떤 방법이 있는가? 분명히 아래에서 시도 할 때 막대에 대한 범위 기반 오류가 발생합니다. 잘못된 test
의 값이있는 경우이전 매개 변수의 기능으로 매개 변수 기본값을 설정하는 방법이 있습니까? [C++]
void foo(Bar bar, int test = bar.testInt) { ... }
나는 그것을 추측하고 싶다. C++에 다음과 같은 어떤 방법이 있는가? 분명히 아래에서 시도 할 때 막대에 대한 범위 기반 오류가 발생합니다. 잘못된 test
의 값이있는 경우이전 매개 변수의 기능으로 매개 변수 기본값을 설정하는 방법이 있습니까? [C++]
void foo(Bar bar, int test = bar.testInt) { ... }
, 당신은 그것을 감지 할 수있다 :
void foo(Bar bar, int test = -1) { //assuming -1 is invalid
if(test == -1) test = bar.testInt;
//...
}
그렇지 않다면, 당신은 항상 오버로드 기능을 사용할 수 있습니다 기능
void foo(Bar bar, int test) {
//...
}
void foo(Bar bar) {
foo(bar, bar.testInt);
}
일을 오버로드, 기본 매개 변수는 항상 대답이 아닙니다. – meagar
추가 질문으로,이 두 가지 중에서 '올바른'대답이 있습니까? 좀 더 읽을 수있는 것을 찾을 수 있을지 모르겠다. (또한 btw Mike, 나는 당신이 마지막 두 코드 세그먼트에서'// 가정 -1은 유효하지 않다 '라고 생각하지 않는다.) – Stephen
Derp, that 's 내가 복사하고 붙이기 위해 얻는 것! 어쨌든, 아마도 함수 오버로딩과 함께 갈 것입니다. 그러나, 나는 또한 객체의 사본을 너무 많이 만드는 것을 피하기 위해'bar '를 참조로 바꿀 것입니다. –