首先,让我说我不是一个大师C程序员.我有几年的C经验,但我的主要领域是.NET / C#.
我正在研究一种在C中创建动态代理/包装类的方法.特别是,我想要实现的是拦截方法调用.这种技巧在Java / .NET世界中很常见,但C缺乏Reflection.
我找到了一个online tutorial,它解释了如何通过 – >创建包装和拦截方法调用.运算符重载:
class Person{ std::string mName; Person(std::string pName): mName(name){} void printName(){ std::cout << mName << std::endl; } }; template <class T > class Wrap { T * p ; public: Wrap (T * pp ) :p (pp) { } Call_proxy <T> operator ->() { prefix (); return Call_proxy<T>(p); } }; template <class T > class Call_proxy { T * p ; public : Call_proxy (T * pp ) :p (pp ){ } ˜Call_proxy () { suffix (); } T * operator ->() { return p ; } };
从这个示例中可以看出,我们可以在调用之前和之后捕获方法调用事件,但对我来说不清楚的是如何检测调用哪个方法?有可能吗?
谢谢
UPDATE
好吧,为了使事情更加清晰,我并不关心实施是否真正有活力.有一个类似于智能指针的包装类对我来说很好.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。