我想用qtscript做一个数学编辑器。 它将支持脚本中的数组计算。例如array1 + array2 = array3。({1,2,3} + {3,4,5} = {4,6,8}); 也许我需要覆盖operator +, 我查阅了QByteArray的例子,我重写了operator +,但是当我在Script中执行时,它无法调用,任何人都会给我一些建议吗?
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+
}
如果无法实现,可能一种方法是将所有操作符替换为自定义函数。
答案 0 :(得分:1)
据我所知,运算符不能在QtScript中重载,因为一般情况下Javascript中不允许运算符(例如,请参阅ECMA Script 4 - Progress和此Article)。
现在针对您的情况,您可以选择使用Add,Mult,...函数,或者选择一些不太受限制的脚本语言。