Я пытался разрешить моей собственной векторной библиотеке быть мета-типом в QT, через учебные пособия, которые они учат мне Q_DECLARE_METATYPE(class)
. Однако мой класс является шаблоном. Я искал и нашел недокументированный макрос Q_DECLARE_METATYPE_TEMPLATE_1ARG()
, однако я нашел на нем один отчет об ошибке, и никаких отзывов о том, было ли оно исправлено или нет. Я попытался использовать его, и он все еще не регистрируется. Причина в моем классе Shader
моего игрового движка, я храню мундиры и в зависимости от униформы, он сохраняет значение как QVariant
. Вот где я столкнулся с проблемой. Кто-нибудь знает, как зарегистрировать шаблоны для QMetatypes
?Объявление класса шаблона метатипа в QT
0
A
ответ
2
Qt использует макрос, который вы указываете внутренне, и есть также версия с двумя аргументами. QtCore/qmetatype.h
показаны примеры использования. Я не уверен, почему он не работает так, как ожидалось для вас. Мне нужно, чтобы ваш код понял больше.
Однако существует обходное решение, которое может быть приемлемым для вас: если вы знаете все возможные аргументы шаблона, которые вам понадобятся, вы можете явно объявить, что каждый экземпляр шаблона является метатипом. Например, если ваш класс шаблон называется Foo<T>
, и вы знаете, что вы собираетесь использовать только Foo<int>
и Foo<float>
, вы можете просто зарегистрировать те:
Q_DECLARE_METATYPE(Foo<int>)
Q_DECLARE_METATYPE(Foo<float>)
Смежные вопросы
- 1. Объявление специалиста класса класса шаблона
- 2. Объявление typedef класса шаблона
- 3. Объявление шаблона класса в качестве друга шаблона класса в C++
- 4. Объявление класса Qt в заголовочном файле
- 5. Форвардное объявление класса шаблона, вложенного в класс шаблона
- 6. метатипа метаклассов
- 7. Объявление функции шаблона класса-члена, возвращающего карту
- 8. Объявление класса шаблона - не является постоянным выражением
- 9. Объявление переменной внутри класса с параметром шаблона типа шаблона
- 10. Объявление статических элементов данных обычного шаблона класса и класса
- 11. Странное объявление класса
- 12. шаблона в Qt
- 13. Зачем мне нужно форвардное объявление класса в qt?
- 14. Как перенаправить объявление класса шаблона в пространстве имен std?
- 15. Объявление класса общего класса
- 16. Объявление/определение неопределяемого шаблона
- 17. Объявление аргумента шаблона
- 18. Объявление класса в модуле
- 19. Объявление класса в Kotlin
- 20. Объявление класса QT/C++ частного члена, не видимого конструктору?
- 21. Неполное объявление частично специализированного шаблона
- 22. Зачем должно быть хорошо сформулировано объявление функции-члена шаблона класса?
- 23. двойного вложенного класс вперед объявление внутри класса шаблона
- 24. Вписывается в тип метатипа в Swift?
- 25. Объявление нового класса() начало класса
- 26. Объявление класса внутри другого класса
- 27. Использование класса шаблона из класса шаблона в методе шаблона
- 28. Форвардное объявление класса шаблона в вложенном пространстве имен: где должны быть аргументы шаблона по умолчанию?
- 29. Функция шаблона для шаблона класса
- 30. Объявление шаблона decltype с g ++