[解決済み] 関数ポインタを使ったC++メンバ関数の呼び出し
2022-06-25 03:08:31
質問
クラスのメンバ関数に対する関数ポインタを取得し、後でそのメンバ関数を特定のオブジェクトで呼び出すにはどうしたらよいでしょうか。 書きたいのですが。
class Dog : Animal
{
Dog ();
void bark ();
}
…
Dog* pDog = new Dog ();
BarkFunction pBark = &Dog::bark;
(*pBark) (pDog);
…
また、できればコンストラクタもポインタを介して起動したいのですが。
NewAnimalFunction pNew = &Dog::Dog;
Animal* pAnimal = (*pNew)();
これは可能でしょうか、また可能な場合、どのような方法が望ましいでしょうか?
どのように解決するのですか?
読む この をお読みください。
// 1 define a function pointer and initialize to NULL
int (TMyClass::*pt2ConstMember)(float, char, char) const = NULL;
// C++
class TMyClass
{
public:
int DoIt(float a, char b, char c){ cout << "TMyClass::DoIt"<< endl; return a+b+c;};
int DoMore(float a, char b, char c) const
{ cout << "TMyClass::DoMore" << endl; return a-b+c; };
/* more of TMyClass */
};
pt2ConstMember = &TMyClass::DoIt; // note: <pt2Member> may also legally point to &DoMore
// Calling Function using Function Pointer
(*this.*pt2ConstMember)(12, 'a', 'b');
関連
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み] 関数からunique_ptrを返す
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
-
[解決済み】一致する関数ポインターを呼び出すためにタプルを「解凍」する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む