Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: Yegor от Июль 22, 2013, 16:20



Название: Перегрузка оператора && в QtScript.
Отправлено: Yegor от Июль 22, 2013, 16:20
Здравствуйте!

В QtScript делаю операцию над двумя объектами:
Код:
MyObj1 && MyObj2;
Чтобы этот оперетор (&&) работал - нужно перегрузить его.

Для этого скрипта прикрепляю объект pMyAlarmObj:

Код:
//Bind this class to script engine.
QScriptValue my_alarm_obj_val = m_pScriptEngine->newQObject(pMyAlarmObj);
m_pScriptEngine->globalObject().setProperty("AlarmScript", my_alarm_obj_val);

Далее для обработки оператора && создаю public слот в pMyAlarmObj:

Код:
//Override of operator +. Using to make '&&' between 'SensorAlarm'.
bool AlarmScript::operator&&(const SensorAlarm & left, const SensorAlarm & right)
{
    return TRUE;
}

Компилятор выводит ошибку:
error: 'bool AlarmScript::operator&&(const SensorAlarm&, const SensorAlarm&)' must take exactly one argument

То есть компилятор думает, что я хочу переопределить оператор && для класса 'AlarmScript' а не для скрипта. И требует, чтобы в параметрах был только один аргумент. А мне же нужно перехватить && и обработать объекты так, чтобы аргументы были const и не были изменены.

Подскажите, пожалуйста, как все же переопределить &&.


Название: Re: Перегрузка оператора && в QtScript.
Отправлено: lit-uriy от Июль 22, 2013, 17:55
если ты делаешь оператор членом класса, то один аргументом является сам класс, т.е. тебе нужно только "правый" аргумент оставить.


Название: Re: Перегрузка оператора && в QtScript.
Отправлено: Yegor от Июль 22, 2013, 19:08
С этим понятно.
А как же все таки перегрузить оператор в скрипте?


Название: Re: Перегрузка оператора && в QtScript.
Отправлено: Old от Июль 22, 2013, 19:17
А как же все таки перегрузить оператор в скрипте?
А разве это возможно.  ::)


Название: Re: Перегрузка оператора && в QtScript.
Отправлено: ритт от Июль 22, 2013, 21:30
а кастнуть к булке?


Название: Re: Перегрузка оператора && в QtScript.
Отправлено: Yegor от Июль 23, 2013, 12:34
Цитировать
а кастнуть к булке?
А это как?