बनाने/स्क्रीन पर बक्से अद्यतन करने के लिए एक वर्ग को लागू करते हुए मैं एक स्थिर सदस्य समारोह सुनिश्चित करें कि कोई वर्तमान में दृश्यमान बक्से ओवरलैप (सभी वर्तमान में दृश्यमान बक्से को एक स्थिर सूचक सरणी से इसकी जानकारी लेने)एक स्थिर सदस्य फ़ंक्शन केवल कक्षा परिभाषा के अंदर स्थैतिक घोषित क्यों किया जा सकता है और इसकी परिभाषा में भी नहीं?
करता है कि जोड़ना चाहते थे
class Box
{
public:
// ...
static void arrangeOverlappingBoxes();
};
static void Box::arrangeOverlappingBoxes()
{
// ...
}
मैं काफी हैरान हूँ कि यह एक त्रुटि C2724 उत्पन्न था: 'स्थिर' फ़ाइल दायरे में परिभाषित सदस्य कार्यों पर नहीं किया जाना चाहिए मेरी प्रारंभिक कोड निम्नलिखित संरचना था।
कुछ परीक्षण, गूगल और त्रुटि के साथ, मैं पता लगा कि मेरे समारोह परिभाषा कीवर्ड static
, अर्थात खोना चाहिए यह किया जाना चाहिए
void Box::arrangeOverlappingBoxes()
{
// ...
}
अभी तक मैं कोई सुराग नहीं क्या इस के पीछे तर्क हो सकता है। ऐसा लगता है कि वर्ग परिभाषा और इसकी परिभाषा में इसकी घोषणा के लिए एक अलग फ़ंक्शन हेडर होना असंवेदनशील और भ्रमित है। इस के लिए कोई कारण है?
आपके उत्तर के लिए धन्यवाद लेकिन मुझे अभी भी अभी तक बिंदु नहीं मिलता है। संकलक को केवल गुणों के समान संकलित करने के लिए प्रोग्राम किया जा सकता है, जैसे पैरामीटर बराबर होना चाहिए (वास्तव में, जावा सिंटैक्स को इस तरह से होना आवश्यक है)। तो आप क्यों कहेंगे कि इसका कोई मतलब नहीं है? मेरी विनम्र राय में, यह बहुत समझ में आता है: यदि आप अपनी सीपीपी फ़ाइल में देखते हैं (मान लें कि आपकी कक्षा परिभाषा हेडर में है), तो आप तुरंत देखते हैं कि फ़ंक्शन स्थिर है और उदाहरण के लिए, यह पॉइंटर नहीं है अपने हेडर फ़ाइल में देखने के बिना। –
इस बारे में सोचें: यदि आपको .cpp और .h दोनों में फ़ंक्शन प्रकार निर्दिष्ट करने की अनुमति दी गई तो क्या समस्याएं उत्पन्न होंगी? आप देखेंगे कि कंपाइलर वास्तव में आपके .cpp में उसी प्रॉपर्टी के साथ फ़ंक्शन को लागू करने के लिए मजबूर करेगा, जैसा कि हेडर फ़ाइल में है, अन्यथा आपको एक अनसुलझा बाहरी प्रतीक लिंकेज त्रुटि मिलेगी (याद रखें कि सभी बाह्य वर्गों की परिभाषा के साथ लिंक शीर्षलेख से कार्य)। इसलिए यह इस संपत्ति को सीपीपी फ़ाइल में घोषित करने के लिए अनुकूल होगा।सी ++ उतना ही जटिल है जितना कि, अतिरिक्त चुनौतियों की आवश्यकता नहीं है;)। – MichaelCMS
आपकी संपादित टिप्पणी के संबंध में: आप या तो "स्थिर" या ऐसे विशेषताओं को रेखांकित करने के लिए नामकरण सम्मेलनों या टिप्पणियों का उपयोग कर सकते हैं। जब मैं विधि प्रकारों की बात करता हूं तो आप व्यक्तिगत रूप से हेडर फाइलों में देखते हैं (आप घोषणा करते हैं और परिभाषा पर जाते हैं) ... शायद यह शैली का मामला है – MichaelCMS