Работающий код, функция testValue() возвращает копию значения:
class Node : public QObject
{
Q_OBJECT
public:
//some code
Q_INVOKABLE int testValue() {return _test;}
//some code
private:
int _test = 5;
//some code
};
Вызываем фнкцию testValue через invokeMethod:
int testValue;
world->metaObject()->invokeMethod(world, "testValue", Q_RETURN_ARG(int, testValue));
qDebug() << "TEST VALUE:" << testValue; //5
Все хорошо, видим на экране 5
Тот же код, но функция testValue возвращает ссылку:
class Node : public QObject
{
Q_OBJECT
public:
//some code
Q_INVOKABLE int &testValue() {return _test;}
//some code
private:
int _test = 5;
//some code
};
вызываем invokeMethod:
int testValue;
world->metaObject()->invokeMethod(world, "testValue", Q_RETURN_ARG(int, testValue));
qDebug() << "TEST VALUE:" << testValue; //?
значение testValue не меняется и вывод зависит от платформы
Так не работает тоже:
int testValue;
world->metaObject()->invokeMethod(world, "testValue", Q_RETURN_ARG(int&, testValue));
qDebug() << "TEST VALUE:" << testValue; //?
Определим тип intamp, но тоже не работает:
typedef int& intamp;
int testValue;
world->metaObject()->invokeMethod(world, "testValue", Q_RETURN_ARG(intamp, testValue));
qDebug() << "TEST VALUE:" << testValue;
PS Может понадобиться, если функция возвращает ссылку на массивный объект, здесь привел более простой и академический пример, чтобы понять, почему нельзя использовать ссылку в Q_RETURN_ARG
, не нашел прямого упоминания об этом в документации QT
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста, чем отличается виртуальная функция от шаблонной функции?
Стоит задача считывать большие zip-архивы (от 500Мб и выше)
Здравствуйте, код выдает 0 9Подскажите пожалуйста, почему если поменять модификатор метода initialize() в классе А на private, то получаем 6 9 ? Инициализация...