Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java EventHandler移植到C++; 我是java开发者,目前正在学习C++。这样做,我想我可以尝试编码一些程序,我在爪哇在C++中;我的问题是: 如果在Java中,我有以下类体系结构: abstract class Event {} class Event1 extends Event {/*define some variables and methods here*/} class Event2 extends Event {/*define some variables and methods here*/} class MyEventListeners { public void event1Listener(Event1 event){/*do something*/} public void event2Listener(Event2 event){/*do something*/} } class someclass { void somemethod(){ eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event1Listener", null); eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event2Listener", null); //OR! eventHandlerInstance.add(myEventListenersInstance); } void someOtherMethod(){ eventHandlerInstance.fireEvent(new Event1()); // MyEventListeners#event1Listener gets called } } class EventHandler { HashMap<Event, List<Method>> listeners = new HashMap<Event, List<Method>>(); public void add(Method m){ if(m.getParameterTypes().length == 1 && m.getParameterTypes()[0].isAssignableFrom(Event.class){ listeners.get((Event)m.getParameterTypes()[0]).add(m); } } public void add(Class c){ for(Method m : c.getDeclaredMethods()){add(m);} } public void fireEvent(Event e){ for(Event ev : listeners.keySet()){ if(e instanceof ev.getClass()){ for(Method m : listeners.get(ev)){m.invoke(e);} } } } } 抽象类事件{} 类Event1扩展了事件{/*在这里定义一些变量和方法*/} 类Event2扩展了事件{/*在这里定义一些变量和方法*/} 类MyEventListeners{ public void event1Listener(Event1事件){/*执行操作*/} public void event2Listener(Event2事件){/*执行操作*/} } 上课{ void方法(){ 添加(myEventListenersInstance.getClass().getMethod(“event1Listener”,null); 添加(myEventListenersInstance.getClass().getMethod(“event2Listener”,null); //或者! 添加(MyEventListenerInstance); } void someOtherMethod(){ 调用eventHandlerInstance.fireEvent(new Event1());//MyEventListeners#event1Listener } } 类事件处理程序{ HashMap侦听器=新建HashMap(); 公共无效添加(方法m){ 如果(m.getParameterTypes().length==1&&m.getParameterTypes()[0]。isAssignableFrom(Event.class){ get((事件)m.getParameterTypes()[0]).add(m); } } 公共空间添加(c类){ 对于(方法m:c.getDeclaredMethods()){add(m);} } 公共火灾事件(事件e){ for(事件ev:listeners.keySet()){ if(e instanceof ev.getClass()){ 对于(方法m:listeners.get(ev)){m.invoke(e);} } } } } 这个代码可能不会起作用,因为我在两分钟内就写下来了,但是它应该能使我想象我所做的事情。问题是,我听说C++不支持反射… 是否可以将java代码移植到C++中,如果是,怎么? “问候”< P>我没有遍历代码,但没有,C++没有运行时类型信息(反射)支持。_Java_C++_Events - Fatal编程技术网 我没有遍历代码,但没有,C++没有运行时类型信息(反射)支持。,java,c++,events,Java,C++,Events" /> 我没有遍历代码,但没有,C++没有运行时类型信息(反射)支持。,java,c++,events,Java,C++,Events" />

将Java EventHandler移植到C++; 我是java开发者,目前正在学习C++。这样做,我想我可以尝试编码一些程序,我在爪哇在C++中;我的问题是: 如果在Java中,我有以下类体系结构: abstract class Event {} class Event1 extends Event {/*define some variables and methods here*/} class Event2 extends Event {/*define some variables and methods here*/} class MyEventListeners { public void event1Listener(Event1 event){/*do something*/} public void event2Listener(Event2 event){/*do something*/} } class someclass { void somemethod(){ eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event1Listener", null); eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event2Listener", null); //OR! eventHandlerInstance.add(myEventListenersInstance); } void someOtherMethod(){ eventHandlerInstance.fireEvent(new Event1()); // MyEventListeners#event1Listener gets called } } class EventHandler { HashMap<Event, List<Method>> listeners = new HashMap<Event, List<Method>>(); public void add(Method m){ if(m.getParameterTypes().length == 1 && m.getParameterTypes()[0].isAssignableFrom(Event.class){ listeners.get((Event)m.getParameterTypes()[0]).add(m); } } public void add(Class c){ for(Method m : c.getDeclaredMethods()){add(m);} } public void fireEvent(Event e){ for(Event ev : listeners.keySet()){ if(e instanceof ev.getClass()){ for(Method m : listeners.get(ev)){m.invoke(e);} } } } } 抽象类事件{} 类Event1扩展了事件{/*在这里定义一些变量和方法*/} 类Event2扩展了事件{/*在这里定义一些变量和方法*/} 类MyEventListeners{ public void event1Listener(Event1事件){/*执行操作*/} public void event2Listener(Event2事件){/*执行操作*/} } 上课{ void方法(){ 添加(myEventListenersInstance.getClass().getMethod(“event1Listener”,null); 添加(myEventListenersInstance.getClass().getMethod(“event2Listener”,null); //或者! 添加(MyEventListenerInstance); } void someOtherMethod(){ 调用eventHandlerInstance.fireEvent(new Event1());//MyEventListeners#event1Listener } } 类事件处理程序{ HashMap侦听器=新建HashMap(); 公共无效添加(方法m){ 如果(m.getParameterTypes().length==1&&m.getParameterTypes()[0]。isAssignableFrom(Event.class){ get((事件)m.getParameterTypes()[0]).add(m); } } 公共空间添加(c类){ 对于(方法m:c.getDeclaredMethods()){add(m);} } 公共火灾事件(事件e){ for(事件ev:listeners.keySet()){ if(e instanceof ev.getClass()){ 对于(方法m:listeners.get(ev)){m.invoke(e);} } } } } 这个代码可能不会起作用,因为我在两分钟内就写下来了,但是它应该能使我想象我所做的事情。问题是,我听说C++不支持反射… 是否可以将java代码移植到C++中,如果是,怎么? “问候”< P>我没有遍历代码,但没有,C++没有运行时类型信息(反射)支持。

将Java EventHandler移植到C++; 我是java开发者,目前正在学习C++。这样做,我想我可以尝试编码一些程序,我在爪哇在C++中;我的问题是: 如果在Java中,我有以下类体系结构: abstract class Event {} class Event1 extends Event {/*define some variables and methods here*/} class Event2 extends Event {/*define some variables and methods here*/} class MyEventListeners { public void event1Listener(Event1 event){/*do something*/} public void event2Listener(Event2 event){/*do something*/} } class someclass { void somemethod(){ eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event1Listener", null); eventHandlerInstance.add(myEventListenersInstance.getClass().getMethod("event2Listener", null); //OR! eventHandlerInstance.add(myEventListenersInstance); } void someOtherMethod(){ eventHandlerInstance.fireEvent(new Event1()); // MyEventListeners#event1Listener gets called } } class EventHandler { HashMap<Event, List<Method>> listeners = new HashMap<Event, List<Method>>(); public void add(Method m){ if(m.getParameterTypes().length == 1 && m.getParameterTypes()[0].isAssignableFrom(Event.class){ listeners.get((Event)m.getParameterTypes()[0]).add(m); } } public void add(Class c){ for(Method m : c.getDeclaredMethods()){add(m);} } public void fireEvent(Event e){ for(Event ev : listeners.keySet()){ if(e instanceof ev.getClass()){ for(Method m : listeners.get(ev)){m.invoke(e);} } } } } 抽象类事件{} 类Event1扩展了事件{/*在这里定义一些变量和方法*/} 类Event2扩展了事件{/*在这里定义一些变量和方法*/} 类MyEventListeners{ public void event1Listener(Event1事件){/*执行操作*/} public void event2Listener(Event2事件){/*执行操作*/} } 上课{ void方法(){ 添加(myEventListenersInstance.getClass().getMethod(“event1Listener”,null); 添加(myEventListenersInstance.getClass().getMethod(“event2Listener”,null); //或者! 添加(MyEventListenerInstance); } void someOtherMethod(){ 调用eventHandlerInstance.fireEvent(new Event1());//MyEventListeners#event1Listener } } 类事件处理程序{ HashMap侦听器=新建HashMap(); 公共无效添加(方法m){ 如果(m.getParameterTypes().length==1&&m.getParameterTypes()[0]。isAssignableFrom(Event.class){ get((事件)m.getParameterTypes()[0]).add(m); } } 公共空间添加(c类){ 对于(方法m:c.getDeclaredMethods()){add(m);} } 公共火灾事件(事件e){ for(事件ev:listeners.keySet()){ if(e instanceof ev.getClass()){ 对于(方法m:listeners.get(ev)){m.invoke(e);} } } } } 这个代码可能不会起作用,因为我在两分钟内就写下来了,但是它应该能使我想象我所做的事情。问题是,我听说C++不支持反射… 是否可以将java代码移植到C++中,如果是,怎么? “问候”< P>我没有遍历代码,但没有,C++没有运行时类型信息(反射)支持。,java,c++,events,Java,C++,Events,如果您正在使用反射,则需要找到另一种方法来实现相同的结果(可能使用接口或模板)为了把C++ C++ C++的./p>移植到java中,我建议忘记所有关于java的知识,从根本上学习如何用C++的方式来做。尝试把Java方法映射到C++方法上只会导致C++设计的不好。谢谢你的输入。这对我来说是个问题:我应该怎样开始学习C++?几天前我通过阅读学习教程开始了,但是发现我自己滚动得很快,因为我已经知道了很多“基础”。从java C++ C++中有什么东西可以教我学习Java开发人员吗?我已经在C++编

如果您正在使用反射,则需要找到另一种方法来实现相同的结果(可能使用接口或模板)为了把C++ C++ C++的./p>移植到java中,我建议忘记所有关于java的知识,从根本上学习如何用C++的方式来做。尝试把Java方法映射到C++方法上只会导致C++设计的不好。谢谢你的输入。这对我来说是个问题:我应该怎样开始学习C++?几天前我通过阅读学习教程开始了,但是发现我自己滚动得很快,因为我已经知道了很多“基础”。从java C++ C++中有什么东西可以教我学习Java开发人员吗?我已经在C++编程了很多年了,我想我对java语言有一个公平的处理。但是自从C++ 11的引入以来,即使我一直在适应这些变化,我还是觉得需要回到第一原理并重新学习C++ AGA。所以我很感激你在谈到你已经知道的材料时所说的意思。我还没有学习过CPP.com,但我知道有很多糟糕的教程和坏的书和坏老师在教C++。通常因为他们教C.,所以我推荐一本好书。也许Scott Meyers有效C++。来自Java会很好。请留意Scott Meyers的新书即将出版(有效的C++11/14)最好的常见问题:如果你使用IRC,我会在FieloDC++中学到很多在C++中的东西。那里的人可能是卑鄙的,粗鲁的,傲慢的,所以你需要厚皮。但是他们也相当聪明,完全知道他们在说什么。有点挑剔,但是C++确实有一种运行时类型信息,它就是这样。它确实有,但不支持反射。@TimB感谢您的输入。我想接口与Java中的接口相同,所以我将阅读一些关于模板的教程。