Я рефакторинг большого количества кода, где я должен добавить дополнительный параметр для ряда функций, которые всегда будут иметь значение члена этого объекта. Что-то вроде
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);
};
Но мне не разрешено иметь параметр по умолчанию, который является нестатическим членом. Я прочитал этот похожий вопрос , который предполагает, что это невозможно, но мне интересно, есть ли разумное решение. Причина в том, что в 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, причина для дополнительного параметра заключается в том, чтобы вывести некоторые связанные с состоянием элементы из рассматриваемого объекта, чтобы помочь многопоточности.