Cpp クラス メンバ変数ポインタ 新しいページはコチラ
提供: yonewiki
(→クラス メンバ変数ポインタ) |
|||
5行: | 5行: | ||
<tr> | <tr> | ||
<td style="width:1px;"></td> | <td style="width:1px;"></td> | ||
− | <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス メンバ変数ポインタ</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> | + | <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) クラス メンバ変数ポインタ</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> |
</tr> | </tr> | ||
</table> | </table> | ||
36行: | 36行: | ||
int m_iData; | int m_iData; | ||
public: | public: | ||
− | + | CMemberPVal(int iArgData); | |
int Get_Data(); | int Get_Data(); | ||
void Set_Data(int iArgData); | void Set_Data(int iArgData); | ||
46行: | 46行: | ||
<syntaxhighlight2 lang="cpp" line start=100> | <syntaxhighlight2 lang="cpp" line start=100> | ||
− | #include | + | #include <cstdio> |
#include "CMemberPVal.h" | #include "CMemberPVal.h" | ||
− | + | CMemberPVal::CMemberPVal(int iArgData){ | |
void (CMemberPVal::*pfuncSet)(int); | void (CMemberPVal::*pfuncSet)(int); | ||
pfuncSet = &CMemberPVal::SetData; | pfuncSet = &CMemberPVal::SetData; | ||
65行: | 65行: | ||
<syntaxhighlight2 lang="cpp" line start=200> | <syntaxhighlight2 lang="cpp" line start=200> | ||
− | #include | + | #include <cstdio> |
#include "CMemberPVal.h" | #include "CMemberPVal.h" | ||
76行: | 76行: | ||
こんな感じかな。使い方はメンバ関数ポインタと同じですね。Setというメンバ関数の中で、m_iDataというメンバ変数をあえてm_piDataというポインタ変数で参照して、引数に受け取ったiArgDataを代入しています。コンストラクタの方にはメンバ関数をメンバ関数ポインタでSetという関数を参照して、コンストラクタ引数を設定するように呼び出しています。 | こんな感じかな。使い方はメンバ関数ポインタと同じですね。Setというメンバ関数の中で、m_iDataというメンバ変数をあえてm_piDataというポインタ変数で参照して、引数に受け取ったiArgDataを代入しています。コンストラクタの方にはメンバ関数をメンバ関数ポインタでSetという関数を参照して、コンストラクタ引数を設定するように呼び出しています。 | ||
− | == ''' | + | == '''109行目~111行目(CMmberPVal.cppプログラムファイル部)'''== |
<syntaxhighlight2 lang="cpp"> | <syntaxhighlight2 lang="cpp"> | ||
− | int* m_piData = &CMemberPVal::m_iData; | + | int (CMember::*m_piData); |
+ | m_piData = &CMemberPVal::m_iData; | ||
+ | (this->*m_piData) = iArgData; | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
上記部分がメンバ変数ポインタを使っているところです。 | 上記部分がメンバ変数ポインタを使っているところです。 | ||
− | + | もっと有意義な使い方についての説明はまた今度ですね。この先で説明するテンプレートという技術とかを使って、ポインタ型として扱って汎用性を持たせるといったことができます。 | |
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る |