2011-02-04 6 views
4

다음과 같이 시도했지만 작동하지 않습니다. 유사한 효과를 얻을 수있는 방법이 있습니까?어쨌든 멤버 함수를 기본 매개 변수로 사용합니까?

class A 
{ 
public: 
    int foo(); 
    void bar(int b = foo()); 
}; 
+0

정확히 달성하려는 것은 무엇입니까? 우리가하고 싶은 것을 보여주세요. –

+0

getDistance와 같은 멤버 함수가 있습니다 (단위 units = getDefaultUnits()). 그래서 나는 기본값 이외의 것을 원한다면 유닛을 지정할 필요가 없습니다. 또한 단위 enum에 DEFAULT를 추가하는 방법에 대해서도 생각했습니다. –

+0

다른 단위에 다른 유형을 추가하고 다른 모든 단위간에 암시 적 변환 함수를 추가하는 것이 더 좋은 방법 일 수 있습니다. 그런 식으로 유닛을 명시 적으로 사용할 수 있고 나머지는 컴파일러가 처리하도록 할 수 있습니다! C++에서는 타입을 사용하는 것이 매우 저렴하다는 것을 기억하십시오. – ltjax

답변

16

예. 함수를 오버로드하고 그 안에있는 멤버 함수를 호출하십시오.

void bar() { bar(foo()); }

+0

+1 스마트 대답! – Nawaz

+0

저는 이것을 이해하려고합니다. 당신이 나를 도울 수? 나는 너무 혼란스럽고 이것의 목적을 보지 못한다. 이제 2 개의 bar()가 선언되었습니다. 하나는 다른 것을 호출하기위한 것입니까? –

+4

@Nicklamort : 사실 매개 변수의 기본값이있을 때 그 매개 변수에 대한 인수를 전달하지 않고 해당 함수를 호출 할 수 있습니다. 선택적으로 인수도 전달할 수 있습니다. 이것은 바로 여기 상황입니다. * bar *를'bar()'뿐만 아니라'bar (10)'처럼 호출 할 수 있습니다 ... 사실상 바의 매개 변수는 기본값을가집니다! – Nawaz

관련 문제