![]() |
1
8
AspectC++ 是你想要的。我自己没用过,但是 Aspect-Oriented Programming 范例试图解决这个确切的问题。 |
![]() |
2
3
我建议使用非虚拟接口习惯用法。所有公共功能都是非虚拟的。所有虚拟功能都是受保护的或私有的。公共成员将调用委托给虚拟成员,通常作为内联函数实现。 这就是iostreams在STL中实现的方式。您可以在 C++ Wikibooks .
当做,
|
![]() |
3
3
下面可能有点过分了,但是怎么样? |
![]() |
4
2
你可以考虑的另一件事是使用[Boosi/C++0x] SaldypPTR包装器,在返回类实例指针之前,在'-& gt;''过载下调用自定义函数。它涉及修改使用,但不涉及基础类,我已经用了几次它来实现相同的效果。只是另一个想法。 |
![]() |
5
1
构建一个包装类的方法有点不方便,它采用一个基本类型的对象,调用周围的函数,然后调用您想要调用的函数。这就像是 decorator . |
![]() |
6
1
最好的方法是声明一组虚拟函数受保护,让从类继承的开发人员重写虚拟函数。基类使用的接口可以是公共的,它在将信息传递给受保护的虚拟方法之前执行所需的代码。 例如:
如果开发人员知道他有一个特定的子类,他仍然可以通过使用一个动态类型转换和自己的方法集来绕过您的代码。因此,您可能希望遵循已经发布的不涉及基础C++语言的其他建议。 |
![]() |
7
0
这听起来像是分析器所做的。您是否查看过任何分析工具的源代码? |
![]() |
8
0
|
![]() |
9
0
使用
|
![]() |
Walter · 如何配置aspectj忽略getter和setter 7 年前 |
![]() |
MikaelW · AOP,如何仅在直接从包X发出时拦截对给定类的调用 7 年前 |
![]() |
Serhii · 如何从父方法获取注释? 7 年前 |
![]() |
Filip · .使用自定义属性的NET Unity拦截 7 年前 |