Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 02.02.2016
Сообщений: 133
1

Ошибка: invalid application of 'sizeof' to incomplete type 'QStaticAssertFailure<false>'

10.03.2016, 14:54. Показов 4931. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем дня.
Работаю с деревом QTreeWidget.
Имеется вспомогательный класс:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class TreeNodeInfo : public QVariant
{
public:
        int imageIndex;
        int openImageIndex;
        int order;
        int pkID;
        int fkParentID;
        QString nodeLabel;
        QString param;
        QString alias;
        QString description;
        int objectId;
        int objectType;
        explicit TreeNodeInfo();
        ~TreeNodeInfo();
};
При добавлении элемента в дерево делаю:
C++ (Qt)
1
2
3
4
5
6
7
8
9
    QTreeWidgetItem *item;
    TreeNodeInfo *info;
 
    info=new TreeNodeInfo();
    тут идет заполнение полей в info
 
    item=new QTreeWidgetItem(parentItem,0);
    item->setData(0,0,*info);
    ...
Теперь нужно сделать обратную операцию: по имеющемуся элементу дерева вытащить его TreeNodeInfo.
Делаю так:
C++ (Qt)
1
2
3
4
    QVariant v;
    TreeNodeInfo info;
    v=item->data(0,0);
    info=v.value<TreeNodeInfo>();
При сборке вылетает ошибка: invalid application of 'sizeof' to incomplete type 'QStaticAssertFailure<false>'.
Почему так? Что делать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2016, 14:54
Ответы с готовыми решениями:

Invalid use of incomplete type
Есть вот такой код паттерна Observer:#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;memory&gt;...

Invalid use of incomplete type
Пишу программу визуализатор. Суть в том что на вход подается числовая информация, которая...

Invalid use of incomplete type class Ui
Кидаю код #ifndef WINDOWCAM_H #define WINDOWCAM_H #include &lt;QMainWindow&gt; #include &lt;QWidget&gt;...

Error: Invalid use of incomplete type
Всем доброго вечера, возникла проблема в следующем коде. Я скорее всего не замечаю какой-то мелочи....

6
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
10.03.2016, 15:12 2
От QVariant наследоваться нельзя. У QVariant деструктор не виртуальный.
0
2 / 2 / 0
Регистрация: 02.02.2016
Сообщений: 133
10.03.2016, 15:34  [ТС] 3
Как же поступить правильно?
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
10.03.2016, 15:57 4
Цитата Сообщение от swd1999 Посмотреть сообщение
Как же поступить правильно?
Не наследоваться от QVariant. Хотите что-то засунуть в QVariant - следуйте согласно документации. Конкретно - применяйте Q_DECLARE_METATYPE.
0
2 / 2 / 0
Регистрация: 02.02.2016
Сообщений: 133
10.03.2016, 16:05  [ТС] 5
Попробовал сделать не вспомогательный класс, а структуру. Та же проблема. Вопрос: как корректно получить data из итема дерева и поместить его в переменную нужного типа?
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
10.03.2016, 16:32 6
Цитата Сообщение от swd1999 Посмотреть сообщение
Попробовал сделать не вспомогательный класс, а структуру. Та же проблема. Вопрос: как корректно получить data из итема дерева и поместить его в переменную нужного типа?
Как пробовали? Что я вам должен сказать о том, что вы делали не так, если нет кода? Да и структура или класс - не имеет принципиально различия. в С++ они практически идентичны за исключением дефолтной видимости их членов.
0
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
10.03.2016, 19:28 7
Лучший ответ Сообщение было отмечено swd1999 как решение

Решение

Структура == класс с public секцией по умолчанию.

Делаем Q_DECLARE_METATYPE

получаем данные из QVariant - myQVariant.data().value<myClass>();

При необходимости делаем qRegisterMetaType<myClass>("myClass");

Что бы вытащить переменную определенного типа из QVariant вам надо зарегистрировать/задекларировать тип вашей переменной в метаобъектной системе Qt. Иначе QVariant просто не будет знать что вытаскивать.
1
10.03.2016, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2016, 19:28
Помогаю со студенческими работами здесь

Invalid use of incomplete type 'struct QTcpServer'
Пишу тестовую программу по книге. Набрал один-в-один...... Не работает. В гугле ничего подобного...

Invalid use of incomplete type ‘class QDebug’
В первой строке ошибки нет (vec3d - структура Opencv), во второй редактор выдает: int...

Invalid use of incomplete type 'class UI::MainWindow'
В чем проблема? Я только начал работать с QT. Пробовал откатывать всё назад, но это не помогло.

Ошибка return type is incomplete
В строке Point Tools::polPointText(QVector&lt;Point&gt; polygon, int i, double dist) {... Ошибка...

Ошибка: incomplete type is not allowed
Когда я хочу скопировать значение из структуры в массив, то выскакивает такая ошибка.... Что...

Шаблонный класс. Ошибка : aggregate 'Box<info*> ob' has incomplete type and cannot be defined
Здравствуйте! Снова возникла небольшая проблема. Создал шаблонный класс: box.h #ifndef...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru