Переопределить оператор с помощью qtscript

Я хочу сделать математический редактор, используя qtscript. Он будет поддерживать вычисление массива в скрипте. Например, array1 + array2 = array3.({1,2,3}+{3,4,5} = {4,6,8}); Может быть, мне нужно переопределить оператор +, я проверяю пример QByteArray и переопределяю оператор +, но когда я выполняю в скрипте, его нельзя вызвать, кто-нибудь может дать мне несколько советов?

bytearray.h
class ByteArrayClass : public QObject, public QScriptClass
{
public: 
   QByteArray &operator+(int n);
}

main.cpp
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QScriptEngine eng;
ByteArrayClass *baClass = new ByteArrayClass(&eng);
eng.globalObject().setProperty("ByteArray", baClass->constructor());
eng.evaluate("ba = new ByteArray(4))" 
eng.evaluate("ba+2;"); //this will not invoke override operator+.

ByteArrayClass *ba = new ByteArrayClass(&eng);
int n = 3;
*ba + n;    //but this can invoke the override operator+
}

Если это невозможно реализовать, возможно, один из способов - заменить весь оператор на пользовательскую функцию.

1 ответ

Насколько я знаю, операторы не могут быть перегружены в QtScript, потому что это не разрешено в Javascript в целом (например, см. ECMA Script 4 - Progress и эта статья).

Теперь для вашего случая у вас есть выбор: использовать функции Add, Mult, ... или выбрать какой-нибудь менее ограниченный язык сценариев.

Другие вопросы по тегам