Как использовать 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!