首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,求报错原因

2012-04-23 
在线等,求报错原因#includeiostream#includelistusing namespace stdclass Observer{public:virtual

在线等,求报错原因
#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函数才不需要定义
这两个概念你混淆了

热点排行