Cpp クラス メンバ関数ポインタ 新しいページはコチラ
提供: yonewiki
(ページの作成:「<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-tex...」) |
(→クラス メンバ関数ポインタ) |
||
8行: | 8行: | ||
<br /> | <br /> | ||
== '''クラス メンバ関数ポインタ''' == | == '''クラス メンバ関数ポインタ''' == | ||
+ | メンバ関数ポインタは関数ポインタの拡張的な考え方だと思えば良いです。関数ポインタと全く同じではないので、使い方を覚えないと駄目です。といっても関数ポインタ自体もそれほど活用されているという風には思わない技術ですが、使ってる人は使ってるし、これをうまく使いこなす頭のいい人もいるのは確かです。というわけで、このクラスのメンバ関数ポインタも一応、抑えておきます。 | ||
+ | |||
+ | |||
+ | 関数ポインタと異なるのは、名前解決演算子('''::''')を使わないと駄目そうだということです。それは関数名を定義するときにも名前解決スコープ演算子を使わないといけないので、なんとなく予想できることです。でも具体的にはどうするべきなのか?ということになります。 | ||
+ | |||
+ | |||
+ | 具体的には以下のようになります。 | ||
+ | |||
+ | |||
+ | FunctionPointer001.cpp | ||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | #include "stdafx.h" | ||
+ | #include "FunctionPointer001.h" | ||
+ | |||
+ | void CFunctionPointer001::example_function1(int n,int m){ | ||
+ | printf("example_function1 %d %d\n",n, m); | ||
+ | } | ||
+ | |||
+ | CFunctionPointer001::CFunctionPointer001(void) | ||
+ | { | ||
+ | void (CFunctionPointer001::*pfuncExample1)(int,int); | ||
+ | //pfuncExample1 = &CFunctionPointer001::example_function1; | ||
+ | pfuncExample1 = example_function1; | ||
+ | (this->*pfuncExample1)(100,200); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> |