C++ (C+;+;)AspectC++;派生类的截取方法
这可能是一个愚蠢的问题,但我在搜索了几个小时后找不到答案 使用AspectC++,我们可以定义切入点,这些切入点表示一旦匹配就会被截取的内容。比如说,我能做到C++ (C+;+;)AspectC++;派生类的截取方法,c++,intercept,aspect,C++,Intercept,Aspect,这可能是一个愚蠢的问题,但我在搜索了几个小时后找不到答案 使用AspectC++,我们可以定义切入点,这些切入点表示一旦匹配就会被截取的内容。比如说,我能做到 pointcut pc() = call("% Base::%(...)"); 因此,任何使用切入点的通知pc都将拦截对类基的某个方法的任何调用。即使以后创建了Base的子类Sub,pc也会拦截对Sub方法的调用,这种方法仍然有效。现在,我只想截取Sub的方法,即Sub的方法,它们在Base中不存在。我们如何才能使pc()截取最终创建的
pointcut pc() = call("% Base::%(...)");
因此,任何使用切入点的
通知
pc都将拦截对类基
的某个方法的任何调用。即使以后创建了Base
的子类Sub
,pc
也会拦截对Sub
方法的调用,这种方法仍然有效。现在,我只想截取Sub
的方法,即Sub
的方法,它们在Base
中不存在。我们如何才能使pc()
截取最终创建的Base
的任何子类的任何方法,而不是Base
本身的方法?为什么需要进行区分?公共基类方法通常被视为在功能上等同于派生类方法。换句话说,没有实际的区别。你能保护基类成员吗?因为我不想截获基类的方法,只想截获那些最终由开发人员添加到其子类中的方法。这是可能的吗?好的,但是如何避免(通过继承)公共基类方法在功能上与派生类方法相同的问题呢?如何区分它们呢?很好,所以我现在刚刚测试了,使用aspectc++,我可以简单地将切入点定义为调用(“%Sub::%(…)”)
,它以某种方式区分继承方法和非继承方法。问题是:如何使它适用于任何子类?