У меня есть QList
из QGenericArgument
в моем приложении (для реализации класса обработчиков событий). В одном конкретном случае мне нужно извлечь значение аргумента, чтобы выполнить некоторую проверку. Я знаю тип. Так что я написал это:Как я могу получить значение QGenericArgument?
template <class T>
T GetQArgumentValue(QGenericArgument &arg)
{
const unsigned char* data = reinterpret_cast<const unsigned char*>(arg.data());
return (T) *data;
}
и использовать так:
QGenericArgument arg = Q_ARG(int, 30); // this is obviously an example, I get this from an array in real code
int value = GetQArgumentValue<int>(arg);
Он хорошо работает. Так что мой вопрос:
1) Так как это внутренний вспомогательный класс, есть ли проблема с его использованием в моем приложении?
2) Есть ли встроенная функция для этого? Я предпочитаю встроенные, заново изобретать колесо.
редактировать:
То, что я хочу это:
давайте предположим, что у меня есть:
QGenericArgument arg = Q_ARG(int, 30);
Я хочу, чтобы получить значение 30
назад:
int v = magic_function<int>(arg); // v = 30
Каков ваш прецедент? 'QGenericArgument' используется только для' QMetaObject :: invokeMethod() '. –
Я создал собственный класс, где у меня есть 'QList'' QGenericArgument', где они в конечном итоге передаются в 'QMetaObject :: invokeMethod()' – Jack
Этот вопрос немного страдает от проблемы [xy] (http: // meta. stackexchange.com/questions/66377/what-is-the-xy-problem). Было бы более полезно, если бы вы сказали нам, почему вам нужны эти общие аргументы. Каков ваш прецедент? Опишите на высоком уровне то, что вы пытаетесь сделать, возможно, есть лучшее решение, которое не зависит от 'QGenericArgument'. –