The following code is an implementation of Observer design pattern
But Im getting the following errorCode:#include<iostream> #include<vector> using namespace std; class Subject{ vector<class Observer*> views; int value; public: void attach(Observer *obs) { views.push_back(obs); } void setValue(int val) { value=val; notify(); } int getValue() { return value; } void notify(); }; void Subject::notify() { for(int i=0;i<views.size();i++) { views[i]->update(); } } class Observer{ Subject *model; int denom; public: Observer(Subject *sub,int d):model(sub),denom(d) { model->attach(this); } virtual void update()=0; protected: Subject *getSubject() { return model; } int getDivisor() { return denom; } }; class DivObserver: public Observer{ public: DivObserver(Subject *sub,int d):Observer(sub,d) { } void update() { int v=getSubject()->getValue(),d=getDivisor(); cout << v << " div " << d << " is " << v / d << '\n'; } }; class ModObserver: public Observer{ public: ModObserver(Subject *sub,int d):Observer(sub,d) { } void update() { int v=getSubject()->getValue(),d=getDivisor(); cout << v << " mod " << d << " is " << v % d << '\n'; } }; int main() { Subject sub; DivObserver d1(&sub,4); DivObserver d2(&sub,3); ModObserver m1(&sub,4); sub.setValue(14); cin.get(); return 0; }
error C2027: use of undefined type 'Observer'




Reply With Quote