在线等,求报错原因
时间:2011-12-24
来源:互联网
#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);
}
#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);
}
作者: delilah171 发布时间: 2011-12-24
你的Object、Subject类的实现在哪啊?加上实现就可以了,比如,直接在类里面为几个函数/虚函数提供空实现即可。
作者: heartlesstoanyone 发布时间: 2011-12-24
你把报错信息也贴出来吧
作者: cbzjzsb123 发布时间: 2011-12-24
virtual 函数是要定义的,pure virtual函数才不需要定义
这两个概念你混淆了
这两个概念你混淆了
作者: qscool1987 发布时间: 2011-12-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28