많은 수의 함수에 추가 매개 변수를 추가해야하는 많은 양의 코드를 리팩토링합니다.이 매개 변수는 항상 해당 개체의 멤버 값을 갖습니다. 이제C++의 기본 매개 변수가 아닌 정적 멤버
class MyClass
{
public:
CMyObject A,B;
void MyFunc(CMyObject &Object);
// used to be void MyFunc();
};
같은 뭔가, 나는 실제로 같은
class MyClass
{
public:
CMyObject A,B;
void MyFunc(CMyObject &Object = A);
};
읽는 것 그러나 나는 비 정적 구성원 인 기본 매개 변수를 가질 수 아니에요. 이게 불가능하다고 제안하는 this similar question을 읽었습니다.하지만 합리적인 해결 방법이 있는지 궁금합니다. 기본 매개 변수가 사용될 95 %의 시간이 걸리기 때문에 기본 매개 변수를 사용하면 변경해야하는 코드의 양이 크게 줄어 듭니다. 내 최고의 솔루션은 지금까지 이와 비슷한 것이다.
class MyClass
{
public:
CMyObject A,B;
void MyFunc(BOOL IsA = TRUE);
};
void MyClass::MyFunc(BOOL IsA)
{
CMyObject &Object = A;
if (!IsA)
Object = &B;
}
이 elgant 미만이지만, 내가 부족이이 일을 더 나은 방법이?
편집 : FWIW, 추가 매개 변수의 이유는 멀티 스레딩을 돕기 위해 문제의 개체에서 일부 상태 관련 구성원을 구체화하는 것입니다.
입니다. 데이터 멤버가있는 경우 정의에 따라 상태 비 저장되지 않습니다. –
공정한 점 Neil, text edited. –