List中的元素处理

redoffice 2008-12-30 05:41:39

class StockObserver
{
char *PersonName;
int PersonAge;
public:
void SetName(char *pName);
char* GetName();
void SetAge(int i_age);
int GetAge();
void Update();
~StockObserver();
};
StockObserver::~StockObserver()
{
delete [] PersonName;
}
void StockObserver::Update()
{
cout<<this->GetName()<<"..."<<"关闭股票行情,继续工作!"<<endl;
}
//--------------------------------------------------------------//
class SecretaryObserver
{
list<StockObserver*> observers;
string S_action;
public:
void AttachObserver(StockObserver* observer);
void NodifyObserver();
void SetAction(string s_string);
string GetAction();
};
void SecretaryObserver::AttachObserver(StockObserver* observer)
{
observers.push_back(observer);
}
void SecretaryObserver::NodifyObserver()
{
list<StockObserver*>::iterator observers_i;
for (observers_i = observers.begin();observers_i != observers.end(); ++observers_i)
{
this->SecretaryAction();
observers_i.Update();//这里编译报错?如何修改?
}
}
void SecretaryObserver::SetAction(string s_string)
{
S_action = s_string;
}
string SecretaryObserver::GetAction()
{
cout<<S_action<<endl;
return S_action;
}
//--------------------------------------------------------------//
void
main()
{
SecretaryObserver *LiQ = new SecretaryObserver();
StockObserver *LJ= new StockObserver();
StockObserver *MYG= new StockObserver();
Lijian->SetName("LJ");
MaoYongGang->SetName("MYG");

LiQ->AttachObserver(LJ);
LiQ->AttachObserver(MYG);

LiQ->SetAction("do some actions");
LiQ->NodifyObserver();

delete LiQ;
delete LJ;
delete MYG;

}



代码进行了一部分删节但是不影响看

但是运行到函数:
void SecretaryObserver::NodifyObserver()
{
list<StockObserver*>::iterator observers_i;
for (observers_i = observers.begin();observers_i != observers.end(); ++observers_i)
{
this->SecretaryAction();
observers_i.Update();
}
}
的时候,报错,如何修改,我之前修改了别的地方,但是编译器没有给这个函数报错啊???如何实现把list里的每一个成员都运行函数update,不是这样的吗?
请指教。
...全文
78 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudeshou82666 2008-12-31
  • 打赏
  • 举报
回复
揭贴吧
kkndciapp 2008-12-30
  • 打赏
  • 举报
回复
(*observers_i)->Update(); 
or
(*(*observers_i)).Update();

ReViSion 2008-12-30
  • 打赏
  • 举报
回复
学习
redoffice 2008-12-30
  • 打赏
  • 举报
回复
哦,对了
。。。括号。。。。
jieao111 2008-12-30
  • 打赏
  • 举报
回复
什么错
xiaoyisnail 2008-12-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 redoffice 的回复:]
不对的,楼上
[/Quote]

发现你的list元素是指针类型的
那就是
(*observers_i)->Update();
redoffice 2008-12-30
  • 打赏
  • 举报
回复
不对的,楼上
xiaoyisnail 2008-12-30
  • 打赏
  • 举报
回复
observers_i->Update();

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧