Как использовать QVector внутри QScriptEngine

Первый: Qt 4.7

Я хотел бы получить доступ к QVector<double> внутри скрипта, который является возвращаемым значением функции-члена объекта. Т.е. я передал объект в скрипт, и он имеет свойство set и получает функции, которые имеют QVector<double> в качестве аргументов / возвращаемых значений соответственно. Я сделал следующее:

в своем собственном заголовке:

Q_DECLARE_METATYPE(QVector<double>)

когда я настраивал двигатель:

_engine = new QScriptEngine()
qScriptRegisterSequenceMetaType< QVector<double> >(_engine);

Мой объект (CalcDataVector) имеет следующие публичные слоты (_value является защищенным членом):

QVector<double> value() { return _value; }
void value(QVector<double> data) { _value = data; } 

И я отправляю объект в движок сценария следующим образом:

CalcDataVector *v = new CalcDataVector(); // paraphrasing.. 
QObject *object = v;
QScriptValue value = engine()->newQObject(object);
engine()->globalObject().setProperty("in", value);

Я хочу получить доступ к вектору v внутри скрипта:

var test  = in.value()

Который, как я новичок в qscript, может иметь ослепительно очевидную синтаксическую ошибку. Пожалуйста, просветите меня!

Я получаю синтаксическую ошибку:

Синтаксическая ошибка: ошибка разбора.

Я могу манипулировать объектом, который отправляю, другими способами, поэтому я знаю, что он здесь.

редактировать: я также отправляю выходную переменную того же типа, что и вход. Я могу сделать следующее:

var test = [ 100, 200, 300 ]
out.value(test)

но нет

var test = [ 100, 200, 300 ]
in.value(test)

1 ответ

Итак... оказывается, что "в" является зарезервированным словом в JavaScript/ECMA!

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