首页 > TAG信息列表 > double-dispatch

C中的双重调度/多方法

我对C双重调度有疑问.在下面的代码中,我希望第二组的结果与第一组的结果相匹配. 我不知道实际的类型(除非我尝试dynamic_cast)但我知道该对象继承自BaseClass类型.实现这一目标的最有效(性能)方法是什么? 谷歌搜索了一段时间后,我发现了双重调度和loki多方法.我在Shape示例中遇到的

operator ==在C中使用双重调度

应该如何实施 operator==(const Base& base) 比较子类s.t.调用时调用将被正确调度 Base* base1 = new Derived1(); Base* base2 = new Derived2(); base1->operator==(*base2)? 解决方法:>将operator ==实现为独立功能. >让它在其中一个参数上调用虚方法(例如IsEqual()) 这让你

c – 给定抽象基类X,如何创建另一个模板类D,其中T是从X派生的类的类型?

我希望能够接受消息&引用Message1或Message2类的对象.我希望能够创建一个MessageWithData< Message1>或MessageWithData< Message2>基于Message&的基础类型宾语.例如,见下文: class Message {}; class Message1 : public Message {}; class Message2 : public Message {}; templat

c# – .Net 4.0优化代码,用于重构现有的“if”条件和“is”运算符

我有以下C#代码.它工作正常;但是使用is operator,GetDestination()方法会被多个if条件混乱. 在.Net 4.0(或更高版本)中,避免这些“if”条件的最佳方法是什么? 编辑:角色是业务模型的一部分,目标纯粹是使用该业务模型的一个特定应用程序的工件. 码 public class Role { } public clas

Java中的Double Dispatch自动化

我有两个接口Query和Filter(Query是一个简化示例的类,我现在有1个查询),我现在想要写函数Query.applyFilter()取决于Filter是什么实际的,即NameFilter和DateFilter的不同函数和每隔一个过滤器. 我的解决方案如下: interface Filter { public abstract void modifyQuery(Query q