forward declaration of class 錯誤


在使用Qt的時候遇到這個錯誤,查了一下發現,是因為我沒有正確的使用前置聲明。

 1 #ifndef FIRSTPAGE_H
 2 #define FIRSTPAGE_H
 3 
 4 #include "ui_dialog.h"
 5 //#include <QWizardPage>
 6 class QWizardPage;
 7 
 8 class FirstPage : public Ui::Dialog, public QWizardPage
 9 {
10 public:
11     FirstPage();
12 };
13 
14 #endif // FIRSTPAGE_H

引用了這位的博客 c++ forward declaration 上的說明,如下:

可以聲明一個類而不定義它
   class Screen;//declaration of the Screen class
   這個聲明,有時候被稱為前向聲明(forward declaration),在程序中引入了類類型的Screen.在聲明之后,定義之前,類Screen是一個不完全類型(incompete type),即已知Screen是一個類型,但不知道包含哪些成員.
   不完全類型只能以有限方式使用,不能定義該類型的對象,不完全類型只能用於定義指向該類型的指針及引用,或者用於聲明(而不是定義)使用該類型作為形參類型或返回類型的函數.

 

也就是說我們使用前置聲明是因為不想引入該類的頭文件,但是前置聲明是有限制的,也就是,只能用來定義前置聲明類的指針或者引用。這里我繼承了該類,而繼承是需要了解類的內部結構的,所以造成了這個錯我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM