gpt4 book ai didi

c++ - 使用访问者模式对事件进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:17 26 4
gpt4 key购买 nike

我实现了一个访问者模式,它似乎工作正常,但我不知道如何在开始和结束时做一些内务处理工作。

无法保证各种重载的 visit() 方法何时会被调用,所以我无法判断谁是第一个,谁是最后一个。

基本上,我使用访问者将设置保存到磁盘或从磁盘加载设置。问题是(在加载时)我需要在执行任何其他加载步骤之前清除一些东西。我确实放入了一个静态变量和方法来初始化事物并执行此加载,这应该确保某些事情在一开始只发生一次 - 但是 - 一个人可以多次加载事物。所以在阅读结束时我想重置静态变量(这样他们就可以再次阅读而旧垃圾仍然存在)。我不能简单地将重置放入析构函数(或析构函数调用的方法)中,因为对于每组设置,具体的访问者对象都被创建/销毁了 n 次。

我想我需要用另一种模式将其蛋黄,但我不知道该怎么做。

最佳答案

跟进我上面的评论。

你可以上课

class VisitorState {
public:
VisitorState() {
// stuff to be done on loading
}
~VisitorState() {
// stuff to be done when done.
}
private:
// state info you might want to keep around
};

然后修改您的 Visitor 接口(interface)以包含包含 VisitorState 的方法

someReturn visit(VisitorState &state,....) 

当请求加载文件并保持与正在访问的文件相关联时,必须分配(新建)VisitorState ... 当文件处理结束时(删除)必须释放它.

关于c++ - 使用访问者模式对事件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com