visitor-pattern

    6热度

    1回答

    如果我的boost::variant中的所有类型都支持相同的方法,是否有一种方法可以对其进行一般调用(即不对每种方法分别调用static_visitor)? 我想要得到这样的工作: class A { void boo() {} }; class B { void boo() {} }; class C { void boo() {} }; t

    0热度

    4回答

    我读了一本关于访问者模式的书。它给出了与oodesign's website相同的类图。 它说添加新的ConcreteElement类很难。但我不明白为什么。据我了解,Concretevisitor定义了一组操作,这些操作必须由具体元素使用。所以当我添加一个新的元素时,它具有与前面定义的相同的操作,我不需要添加任何东西(只是ConcreteElement本身)。如果我添加一个新的元素,它不具有我在

    -2热度

    4回答

    访客设计模式的接受方法是否可以通过类层次结构的根来实现?

    0热度

    4回答

    我意识到这是一个非常具体的问题,所以如果人们给出的答案包含明确的代码就可以了解如何实现这一点,那将会很有帮助。谢谢。 我有一个抽象基类形状: class Shape { ..... virtual bool GetIntersection(Shape* _shape) = 0; } class Circle : public Shape {...} class Tri

    1热度

    1回答

    我需要处理一种语言的AST,并且树上的访问者只是很好地解决了这个问题。但是某些功能需要我在访问者永久性上下文中保留某种堆栈(已知变量的堆栈),随着访问的进行而延长和减少。它是否打破访客模式?

    7热度

    2回答

    我有一个状态模式的实现其中每个状态处理从事件队列中获得的事件。基类State类因此具有纯虚拟方法void handleEvent(const Event*)。事件继承基类Event类,但每个事件包含可以是不同类型的数据(例如int,string ...或其他)。 handleEvent必须确定接收到的事件的运行时间类型,然后执行向下采样以提取事件数据。事件是动态创建的,并存储在一个队列中(所以上传

    7热度

    1回答

    我想使用访问者模式来执行我的编译器的AST的操作,但我似乎无法弄清楚将正常工作的实现。 AST类摘录: class AstNode { public: AstNode() {} }; class Program : public AstNode { public: std::vector<std::shared_ptr<Class>> classes;

    2热度

    1回答

    我有一个图形和一组非常简单的访问者,对图的顶点/边进行一些计算,例如获取边的总重量和漂亮地打印图。 我想更进一步,让访问者以DFS方式访问图形。 但是,我认为访问者模式应该与遍历机制分开,并且应该使用其他模式(如迭代器)创建遍历方法。我是对的还是错过了一些东西?

    2热度

    1回答

    的问题,我已经实现了访问者模式,我们有一些不同的方面如下: 1>从GoF的书所示的典型的例子不同的是,子类的设备没有摊铺。换句话说,子类都在层次结构中。 例如: //平 EquipmentA:公共设备{} EquipmentB:公共设备{} EquipmentC:公共设备{} //hierarchy EquipmentA : public Equipment {} EquipmentB : p

    0热度

    2回答

    我正在使用JSoup,我正在做一些节点遍历。 String myString; NodeTraversor articleNodeTraversor = new NodeTraversor(new NodeVisitor() { @Override public void tail(Node node, int depth) { //Do some