メソッドのフック
Posted feedbacks - C++
こんにちは。
C++で関数テンプレートです。 方法は、スレッドにすでに投稿されてる方々の方法を参考にしています。 実際本気でやろうと思ったら、OSのAPI使うか、アセンブリいじる羽目になるので低級なほどシビアですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h>
///////////////////////////////////////////
class Functer{
char* str_;
public:
Functer(char* str){str_ = str;}
int operator ()(){
printf("%s",str_);
return 0;
}
};
///////////////////////////////////////////
int func(){
printf("I am Main Process!\n");
return 0;
}
///////////////////////////////////////////
template<class F1,class F2,class F3>
int Call(F1& Before,F2& Main,F3& After){
int ret;
Before();
ret = Main();
After();
return ret;
}
////////////////////////////////////////////
int main(){
Functer F1("Before Process!\n"),F3("After Process!!\n");
Call(F1,func,F3);//関数形式で呼べれば何も問題ない。はず。
return 0;
}
|


todogzm
#6017()
Rating0/8=0.00
例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。
そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。
[ reply ]