2014-07-20 6 views
6

नामस्थान Ui का महत्व क्या है जो क्यूटी द्वारा स्वतः उत्पन्न होता है?क्यूटी यू नामस्थान

क्या ये दो नामस्थान समान हैं?

पहले व्यक्ति में, जिसमें क्लास मेनविंडो की ui_MainWindow.h से आगे की घोषणा की गई है, इसे class Ui::MainWindow क्यों घोषित नहीं किया गया है? कंपाइलर कैसे जानता है कि मेनविंडो ऑटो-जेनरेट किए गए यूआई हेडर से आ रहा है?

ui_MainWindow.h

namespace Ui { 
    class MainWindow: public Ui_MainWindow {}; 
} // namespace Ui 

उत्तर

5

में MainWindow.h

namespace Ui { 
class MainWindow; //MainWindow from ui_MainWindow.h 
} 

में यह एक ही नाम-अंतरिक्ष में समूह को अपने स्वत: जनरेट खिड़कियों प्रयोग किया जाता है। यह डिजाइनर ui फ़ाइल और क्लास जो कार्यक्षमता लागू करता है से उत्पन्न ui वर्ग के बीच अंतर करने में मदद करता है।

+0

मुझे पता है कि 'मेनविंडो.h'' में एक नेमस्पेस का उपयोग क्यों किया जाता है, मुझे लगता है कि मेरा मतलब है कि 'Ui_MainWindow.h' में एक नेमस्पेस उई क्यों बनाई गई है। और 'MainWindow.h' में नेमस्पेस उई में 'क्लास मेनविंडो' कैसे पता चलता है कि यह मेरे द्वारा बनाई गई यूआई फाइल में 'मेनविंडो' कक्षा की अगली घोषणा है। –

4

नामस्थान यूई का महत्व क्या है जो क्यूटी द्वारा स्वतः उत्पन्न होता है?

ताकि यह अपने स्वयं के "बबल" में रहता है और किसी अन्य समान नामित वर्ग के साथ संघर्ष नहीं करेगा, जैसा कि आप स्पष्ट रूप से बनाते हैं। निश्चित रूप से, वे यह बना सकते थे कि इसे अलग-अलग कहा जा रहा है, लेकिन तब भी नामों को सी ++ में संघर्ष से बचने के लिए अच्छा अभ्यास है।

क्या ये दो नामस्थान समान हैं?

हां, ज़ाहिर है, उसी नाम के साथ नाम एक ही नाम के समान नाम के साथ नामस्थान हमेशा एक परियोजना में समान होते हैं।

मुझे लगता है कि मेरा मतलब है कि Ui_MainWindow.h में कोई नेमस्पेस उई क्यों बनाया गया है।

ठीक है, यह कहीं और बनाया जाएगा, वास्तव में? वहां कुछ फ़ाइल होने की आवश्यकता है जहां यह कोड उत्पन्न होता है, फ्लाई पर जेनरेट कोड के साथ किसी मौजूदा स्रोत फ़ाइल को प्रदूषित नहीं करता है। चाहे वह जिस तरह से कहा जाता है, उसे फिर से व्यक्तिगत स्वाद है।

और मेनविंडो में नामस्थान यूई में क्लास मेनविंडो कैसे करता है, तो पता है कि यह मेरे द्वारा बनाई गई यूआई फाइल में मेनविंडो क्लास की अगली घोषणा है।

ठीक है, इसका क्यूटी के साथ कुछ लेना देना नहीं है, यह केवल सी ++ मूल बातें है। ऐसा लगता है कि आपको नहीं पता कि कौन से नामस्थान हैं और उनका उपयोग कैसे किया जाता है। इसे नामस्थान के साथ "टैग किया गया" होगा, इसलिए संकलक निश्चित रूप से जानता है कि यह किस संदर्भ में है। अब नामस्थान के बिना इसकी कल्पना करो। यह तब संकलक के लिए पूरी तरह अस्पष्ट होगा।

+0

m नामस्थान के साथ "टैग" द्वारा आपका क्या मतलब है? .moc फ़ाइल में? मैंने कक्षा बनाने और इसे 'Ui_Mainwindow.h' में नेमस्पेस उई में डालने की कोशिश की और त्रुटियों के बिना' मेनविंडो.h' में आगे की घोषणा नहीं जोड़ सका। –

+0

@ माइक्रो पेंगुइन: यह मूल सी ++ है -> http://www.stroustrup.com/4th.html अध्याय 14. – lpapp

+0

ठीक है, ओह। मैं उलझन में था क्योंकि Ui_MainWindow.h स्वत: उत्पन्न और छुपा था। मेरा मानना ​​है कि यह संकलन समय पर पुनर्जीवित है। लेकिन कुल मिलाकर, वे एक ही नामस्थान हैं। –

संबंधित मुद्दे