2013-02-12 4 views
1

Этот код:Неправильное использование неполного типа 'STRUCT QDeclarativeProperty'

QGraphicsObject *object=rootObject(); 
object->setProperty("width", 100); 
QDeclarativeProperty(object, "width").write(100); 

дает следующее сообщение об ошибке:

Invalid use of incomplete type 'struct QDeclarativeProperty' 
+0

Вы можете вставить точный, полный вывод ошибки компилятора? –

ответ

3

Добавить

#include <QDeclarativeProperty> 

в верхней части исходного кода. Кажется, что где-то в вашем коде уже есть объявление вперед для QDeclarativeProperty, поэтому компилятор знает, что это класс/структура, но фактическое определение класса отсутствует.

Следующий исходный код правильно работает через компилятор:

#include <QCoreApplication> 
#include <QVariant> 
#include <QDeclarativeProperty> 

int main(int argc, char ** argv) { 
    QCoreApplication a(argc, argv); 

    QObject *object = 0; // rootObject(); 
    object->setProperty("width", 100); 
    QDeclarativeProperty(object, "width").write(100); 
} 

При замене #include <QDeclarativeProperty> с

class QDeclarativeProperty; 

Вы получаете следующие компиляции ошибки времени:

main.cpp: In function 'int main(int, char**)': 
main.cpp:11:38: error: invalid use of incomplete type 'struct QDeclarativeProperty' 
main.cpp:4:7: error: forward declaration of 'struct QDeclarativeProperty' 
+0

не работает для меня .. показывая ту же ошибку – sheetal

+0

что вы имеете в виду по foward declarartion..Это условия для меня новы – sheetal

+1

Если вам нужен только указатель (или ссылка) на класс, вы можете использовать 'class MyClass; ... MyClass * myPtr; '. Это достаточная информация для компилятора, если вы не получаете доступа к членам класса. Если вы это сделаете, вы обычно получаете вышеуказанное сообщение об ошибке («неполный тип»), когда вы пропустили, чтобы включить соответствующий заголовочный файл, содержащий определение класса. –

Смежные вопросы