मेरे पास 2 अलग-अलग फ़ाइलों में 2 वर्ग हैं:
RegMatrix.h:
#ifndef _RM_H #define _RM_H #include "SparseMatrix.h" ... वर्ग RegMatrix {... RegMatrix (const SparseMatrix & amp;) {...} // ctor ...}; #endif
स्पेर्स मैट्रिक्सः:
#ifndef _SM_H #define _SM_H #include "RegMatrix.h" ... वर्ग स्पेर्स मैट्रिक्स {... SparseMatrix (कॉन्फ़ रेगमैट्रिक्स एंड आर) {...} // ctor ...}; #endif
कंस्ट्रक्टर लाइनों पर मुझे त्रुटियां मिलती हैं:
त्रुटि C4430: लापता टाइप विनिर्देशक - int मान लिया गया।
त्रुटि C2143: सिंटैक्स त्रुटि: लापता ',' पहले 'और'
लेकिन जब मैं क्लासेस घोषणाएं जोड़ता हूं
वर्ग SparseMatrix; RegMatrix.h फ़ाइल में
और
वर्ग RegMatrix; SparseMatrix.h फ़ाइल में
यह ठीक काम करता है मेरा प्रश्न यह है कि यदि मुझे इसमें शामिल है तो क्यों इसकी आवश्यकता है? 10x।
आप परिपत्र #includes नहीं कर सकते हैं (एक फ़ाइल # दूसरे को शामिल करता है जो # को पहले शामिल करता है फ़ाइल)। आगे #include के बजाय कक्षाओं में से एक को घोषित करने से श्रृंखला को तोड़कर उसे काम करने की अनुमति मिलेगी। वर्ग के नाम को घोषित करने से आपको कक्षा के आंतरिक बिट्स के बारे में जानने के बिना नाम का उपयोग करने की सुविधा मिलती है।
बीटीडब्ल्यू, परिपत्र #includes की इच्छा एक डिज़ाइन गंध है शायद आप एक अंतरफलक बना सकते हैं जो कि दो वर्गों पर निर्भर हो सकता है? तब वे एक दूसरे पर परस्पर निर्भर नहीं रहेंगे।
Comments
Post a Comment