○関数ポインタ
int Func(int , int){}
このような関数があるとします。
int (*pF)(int , int);//pF という変数は、関数へのポインタである、という変数を宣言をしています。
pF = Func;//関数がおかれているアドレスを代入
int x = (*pF)(1 , 2);//関数 test を引数 int int で呼び出ししています
○関数ポインタ配列
void a(void);
void b(void);
void c(void);
このような関数があるとします。
void (*Func[])() = {a,b,c};
(*Func[i])();
○MFCでのクラスでの関数ポインタ
void ***::Func(){}
このような関数があるとします。
void(CObject::*pF)(); //pF という変数は、関数へのポインタである、という宣言をしています。
、
pF=(void(CObject::*)())this->Func ; //関数がおかれているアドレスを代入
(this->*pF)(); //関数 Func を引数 void で呼び出ししています
○MFCの自分の関数をその他のクラスから実行させる考察
inabaクラスのtestメソッドが
inabaクラスで宣言されたfuncクラスに読み出されています。
template <class temp>
class func{
public :
void load(temp*pParam,void(temp::*pF)()){
(pParam->*pF)();
}
};
void inaba::test()
{
while(true){
TRACE("a");
// sleep(1000);
}
}
void inaba::OnButton1() //スレッドの開始
{
func<inaba> f;
f.load(this,this->test);
}
▲トップページ
>
Windows と C++