में चारों ओर घूम रहा है इसलिए मैं can't use initializers in my class constructor सरणी का उपयोग करने के कारण, इसलिए मैंने init()
विधि का उपयोग करने का निर्णय लिया। अब मुझे एक अलग समस्या है। मैं इस तरह एक वर्ग है:एक इनिट विधि
class EPWM {
private:
volatile EPWM_REGS* const regs;
public:
void init(volatile EPWM_REGS* _regs);
};
जहाँ मैं regs = _regs;
आरंभ से init()
लागू करने की आवश्यकता है, लेकिन मैं const
नहीं की वजह से कर सकते हैं। क्या मेरे init विधि में असाइनमेंट को मजबूर करने का कोई तरीका है? मैं const
कीवर्ड रखना चाहता हूं इसलिए मुझे गलती से कहीं और पुन: असाइन नहीं किया गया है।
संपादित करें: के रूप में ज्यादा के रूप में मैं (मेरे कोड यह करने के लिए प्रयोग किया जाता) एक निर्माता + प्रारंभकर्ता उपयोग करने के लिए है, जो इस समस्या का समाधान होगा चाहते हैं, मैं नहीं कर सकता क्योंकि मैं किसी अन्य वर्ग जो EPWM वस्तुओं की एक सरणी है है, और मैं उन वस्तुओं को प्रारंभ नहीं कर सकता क्योंकि सी ++ सरणी सदस्यों के लिए प्रारंभकर्ताओं का समर्थन नहीं करता है। (फिर से, the other question I asked a little while ago on this subject. देखें)
प्रसंग के लिए EPWM का उपयोग कर कुछ इस तरह है:
class PwmGroup {
private:
EPWM *epwm;
void init(EPWM *_epwm) { epwm = _epwm; }
};
/* ... */
// main code:
EPWM epwm[3];
PwmGroup pwmGroup;
{
// EPwm1Regs, EPwm2Regs, EPwm3Regs are structs
// defined by TI's include files for this processor
epwm[0].init(&EPwm1Regs);
epwm[1].init(&EPwm2Regs);
epwm[2].init(&EPwm3Regs);
pwmGroup.init(epwm);
}
स्थिरांक 'ctor में सदस्य regs' क्यों init नहीं? क्या यह प्रारंभिकरण के लिए किसी अन्य सरणी पर निर्भर करता है? – dirkgently
मेरे पास एक और कक्षा है जिसमें ईपीडब्ल्यूएम ऑब्जेक्ट्स की एक सरणी है जिसे मैं कन्स्ट्रक्टर में प्रारंभ नहीं कर सकता क्योंकि सी ++ ऐसी चीज की अनुमति नहीं देता है। –
मुझे आपकी समस्या है। हमेशा मुझे डिजाइन के बारे में दो बार सोचने लगता है। – dirkgently