m_S3G_IfcAddress
jest niestatycznym polem klasy, a przynajmniej tak twierdzi kompilator.
W każdym razie można to rozwiązać przez przeładowanie metody zamiast stosować argument domyślny:
/*
Foo foo; // to nie jest pole klasy tylko zmienna globalna, można użyć jako parametr domyślny np. "void Bar(Foo & f = foo)"
*/
class JakasKlasa {
/*
static Foo foo; // to jest statyczne pole klasy, można użyć jako parametr domyślny
*/
CIFCAddress m_3G_IfcAddress;
CIFCAddress m_S3G_IfcAddress; // a to już jest niestatyczne pole klasy, można użyć jako parametr domyślny, ale trzeba podać obiekt którego pole chcemy użyć np.
// bool sendBreExtMsg(..., CIFCAddress & address = jakis_obiekt->m_S3G_IfcAddress)
// Jeśli damy samo "m_S3G_IfcAddress" to nie jest to rozumiane jako "this->m_S3G_IfcAddress" bo parametry metody są "tworzone" zanim sama metoda zostanie wywołana czyli zanim zaistnieje takie coś jak "this" np.
// class Example {
// void Test(Example *example = this); // źle, jeszcze nie można użyć "this", dopiero wewnątrz metody
// }
bool sendBreExtMsg(const bool isS3G, bool specialAddress, CIFCAddress & address)
{
/* ... */
}
bool sendBreExtMsg(const bool isS3G, bool specialAddress = 0)
{
this->sendBreExtMsg(isS3G, specialAddress, this->m_S3G_IfcAddress);
}
}