在线等,求报错原因
#include<iostream>
#include<list>
using namespace std;
class Observer
{
public:
virtual void Update(int value);
};
class ModObserver:public Observer
{
int m_mod;
public:
ModObserver(int mod)
{
m_mod=mod;
}
virtual void Update(int val)
{
cout << val << " mod " << m_mod << " is "<< val % m_mod <<endl;
}
};
class DivObserver:public Observer
{
int m_div;
public:
DivObserver(int div)
{
m_div=div;
}
virtual void Update(int val)
{
cout << val << " div " << m_div << " is "<< val / m_div << endl;
}
};
class Subject
{
public:
virtual void attach(Observer *aobserver);
virtual void detach(Observer *aobserver);
virtual void notify();
protected:
Subject(){};
};
class oneSubject: public Subject
{
list<Observer *> observerlist;
int m_value;
public:
oneSubject( ){};
virtual void attach(Observer *aobserver)
{
observerlist.push_back(aobserver);
}
virtual void detach(Observer *aobserver)
{
observerlist.remove(aobserver);
}
virtual void notify()
{
list<Observer *>::iterator operations;
for(operations = observerlist.begin() ; operations != observerlist.end() ; ++operations)
{
((Observer *)(*operations))->Update(m_value);
}
}
void setValue(int value)
{
m_value=value;
notify();
}
};
int main()
{
ModObserver *mO = new ModObserver(4);
DivObserver *dO = new DivObserver(3);
oneSubject oneS;
oneS.attach(mO);
oneS.attach(dO);
oneS.setValue(14);
}
[解决办法]
virtual 函数是要定义的,pure virtual函数才不需要定义
这两个概念你混淆了