1

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+
}

これが実現できなかった場合、おそらく1つの方法は、すべての演算子をカスタム関数に置き換えることです。

4

1 に答える 1

1

私の知る限り、QtScript では演算子をオーバーロードできません。これは、Javascript では一般に許可されていないためです (たとえば、ECMA Script 4 - Progressおよびこの記事を参照)。

あなたのケースでは、Add、Mult、... 関数を使用するか、制約の少ないスクリプト言語を使用するかを選択できます。

于 2010-08-04T18:47:57.613 に答える