मैं एक बेयरबोन पर्यवेक्षक पैटर्न को कार्यान्वित कर रहा हूं और कुछ हद तक गुप्त त्रुटि पर फंस गया हूं: "सदस्य संदर्भ आधार प्रकार 'पर्यवेक्षक *' है संरचना या संघ नहीं "। मुझे लगता है कि इसका टेम्पलेट्स के उपयोग के साथ कुछ करना है, जिसके साथ मैं अभी भी काफी असहज हूं।पर्यवेक्षक पैटर्न कार्यान्वित करने में समस्या: "सदस्य संदर्भ आधार प्रकार ________ संरचना या संघ नहीं है"
विषय इंटरफ़ेस::
class Subject {
public:
virtual void notify();
private:
list< Observer * > m_observers;
};
विषय कार्यान्वयन:
void Subject::notify() {
list< Observer * >::iterator i;
for (i = m_observers.begin(); i != m_observers.end(); i++) {
*i->update(this); // ERROR !!! ERROR
}
ऑब्जर्वर सार इंटरफ़ेस:
class Observer {
public:
virtual ~Observer();
virtual void update(Subject * changedSubject) = 0;
protected:
Observer();
};
यहाँ अपमानजनक कोड (सबसे विपक्ष/चीजों को आसान बनाने के लिए हटा दिया विनाशकर्ता) है
कंक्रीट पर्यवेक्षक इंटरफेस:
class ConcreteObserver: public Observer {
public:
ConcreteObserver(ConcreteSubject *);
virtual ~ConcreteObserver();
virtual void update(Subject * changedSubject);
private:
ConcreteSubject * m_subject;
};
कंक्रीट ऑब्जर्वर कार्यान्वयन:
void ConcreteObserver::update(Subject * changedSubject) {
if (changedSubject == m_subject) {
report();
}
}
किसी को भी मदद कर सकता है यदि इस समस्या की पहचान है, मैं बहुत यह जानना चाहेंगे।
चीयर्स, निक
क्या आपने '(* i) -> अपडेट (यह);'? – Vlad