У меня небольшая проблема с перегрузкой оператора.У меня есть класс с именем AtmospheridData, в котором я определяю оператор *.
. В заголовке я определяю этот метод внутри класса:
//! Operator * (scalar)
AtmosphericData operator*(const qreal& qrMult) const;
и определение в .cpp.file, выглядит следующим образом:
AtmosphericData AtmosphericData::operator*(const qreal& qrMult) const
{
AtmosphericData xResult;
xResult.m_qrTemperature = this->m_qrTemperature * qrMult;
xResult.m_qrPressure = this->m_qrPressure * qrMult;
xResult.m_qrDensity = this->m_qrDensity * qrMult;
xResult.m_qrAbsoluteHumidity = this->m_qrAbsoluteHumidity * qrMult;
xResult.m_qrVisibility = this->m_qrVisibility * qrMult;
xResult.m_qrPrecipitationIndex = this->m_qrPrecipitationIndex * qrMult;
xResult.m_xWind.qrNS = this->m_xWind.qrNS * qrMult;
xResult.m_xWind.qrEW = this->m_xWind.qrEW * qrMult;
xResult.m_xWind.qrVert = this->m_xWind.qrVert * qrMult;
xResult.m_xPrecipitationType = this->m_xPrecipitationType;
return xResult;
}
Затем я использую класс в следующем выражении:
AtmosphericData c2;
AtmosphericData t1;
AtmosphericData t2;
AtmosphericData y0;
AtmosphericData y1;
qreal hx;
/* other code */
c2 = - (3 * (y0 - y1) + (hx * ((2 * t1) + t2))) / (hx * hx);
Когда я компилирую (используя qmake-gcc под linux), я получаю следующееошибка
error: no match for ‘operator*’ in ‘3 * AtmosphericData::operator-(const AtmosphericData&) const(((const AtmosphericData&)((const AtmosphericData*)(& y1))))’
Мне кажется, что я делаю что-то не так с объявлением оператора *, но я не понимаю, что я делаю неправильно.
Может кто-нибудь сказать мне, как я могуисправить эту ошибку?
Спасибо за ваши ответы.