Comment detail

メソッドのフック (Nested Flatten)

こんにちは。

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;
}

Index

Feed

Other

Link

Pathtraq

loading...