2013-02-12 21 views
1

此代碼:無效使用不完全類型的 '結構QDeclarativeProperty'

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

提供了以下錯誤:

Invalid use of incomplete type 'struct QDeclarativeProperty' 
+0

可以粘貼確切的,完整的編譯器錯誤輸出? – 2013-02-12 10:57:50

回答

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); 
} 

當你與

class QDeclarativeProperty; 

取代#include <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 2013-02-12 10:39:49

+0

你是什麼意思foward declarartion..these條款對我來說是新的 – sheetal 2013-02-12 10:41:01

+1

如果你只需要一個指針(或引用)到一個類,你可以使用'class MyClass; ... MyClass * myPtr;'。只要您不訪問類的成員,這對於編譯器來說就足夠了。如果你這樣做,當你錯過了包含類定義的正確的頭文件時,你通常會得到上述錯誤信息('incomplete type')。 – 2013-02-12 10:45:03

相關問題