समस्या यह है कि आपकी uiसंपत्ति वर्ग की एक आगे की घोषणा का उपयोग करती है Ui::MainWindowClass, इसलिए "अपूर्ण प्रकार" त्रुटि।
इसमें हेडर फ़ाइल शामिल है जिसमें यह वर्ग घोषित किया गया है जो समस्या को ठीक करेगा।
संपादित करें
आपकी टिप्पणी के आधार पर, निम्नलिखित कोड:
namespace Ui
{
class MainWindowClass;
}
एक वर्ग घोषित नहीं करता है । यह एक आगे की घोषणा है , जिसका अर्थ है कि क्लास किसी समय, लिंक समय पर मौजूद होगा।
असल में, यह सिर्फ संकलक को बताता है कि प्रकार मौजूद होगा, और इसके बारे में चेतावनी नहीं दी जानी चाहिए।
लेकिन वर्ग को कहीं न कहीं परिभाषित करना होगा ।
ध्यान दें कि यह केवल तभी काम कर सकता है जब आपके पास इस प्रकार का एक संकेतक हो।
आपके पास अपूर्ण प्रकार का एक सांख्यिकीय रूप से आवंटित उदाहरण नहीं हो सकता है।
तो या तो आप वास्तव में एक अपूर्ण प्रकार चाहते हैं, और फिर आपको अपने uiसदस्य को सूचक के रूप में घोषित करना चाहिए :
namespace Ui
{
class MainWindowClass;
}
class MainWindow : public QMainWindow
{
private:
Ui::MainWindowClass * ui;
};
या आप एक सांख्यिकीय रूप से आवंटित उदाहरण चाहते हैं Ui::MainWindowClass, और फिर इसे घोषित करने की आवश्यकता है। आप इसे किसी अन्य हेडर फ़ाइल में कर सकते हैं (आमतौर पर, प्रति क्लास एक हेडर फ़ाइल होती है)।
लेकिन बस कोड को बदलकर:
namespace Ui
{
class MainWindowClass
{};
}
class MainWindow : public QMainWindow
{
private:
Ui::MainWindowClass ui;
};
काम भी करेगा।
दोनों घोषणाओं के बीच अंतर पर ध्यान दें। पहले एक आगे की घोषणा का उपयोग करता है, जबकि दूसरा वास्तव में वर्ग की घोषणा करता है (यहां कोई गुण नहीं हैं और न ही विधियां हैं)।