c – 前/后函数调用实现
发布时间:2020-12-16 10:50:06 所属栏目:百科 来源:网络整理
导读:我想知道我是否能以某种方式在C中进行前/后函数调用.我有一个包含很多函数的包装类,在每次包装函数调用之后,我应该调用另一个总是相同的函数. 所以我不想把postFunction()调用放到这样的每一个函数中: class Foo { f1(); f2(); f3(); . . . fn();}void Foo:
我想知道我是否能以某种方式在C中进行前/后函数调用.我有一个包含很多函数的包装类,在每次包装函数调用之后,我应该调用另一个总是相同的函数.
所以我不想把postFunction()调用放到这样的每一个函数中: class Foo { f1(); f2(); f3(); . . . fn(); } void Foo::f1() { ::f1(); postFunction(); } void Foo::f2() { ::f2(); postFunction(); } etc. 相反,当我调用一些Foo的成员函数时,我希望自动调用postFunction.可能吗?这将有助于维护.. 解决方法
可能是
RAII的一个案例!敦敦dunnn!
struct f1 { f1(Foo& foo) : foo(foo) {} // pre-function,if you need it void operator()(){} // main function ~f1() {} // post-function private: Foo& foo; } 然后,您必须确保每次要调用该函数时都创建一个新的临时f1对象.重用它显然意味着每次都不会调用前/后函数. 甚至可以像这样包装它: void call_f1(Foo& foo) { f1(foo)(); // calls constructor (pre),operator() (the function itself) and destructor (post) } 您可能会尝试使用其他结构化方法,但总的来说,看看您是否无法让构造函数/析构函数为您完成繁重的工作. Roman M的方法也是一个好主意.编写一个通用包装器,它以函子或函数指针作为参数.这样,它可以在调用其参数之前和之后调用前/后函数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |