ホームページ > バックエンド開発 > C++ > C でメンバー関数へのポインターを正しく呼び出す方法

C でメンバー関数へのポインターを正しく呼び出す方法

Susan Sarandon
リリース: 2024-12-31 13:20:11
オリジナル
582 人が閲覧しました

How to Correctly Call Pointers to Member Functions in C  ?

C でのメンバー関数へのポインターの呼び出し

メンバー関数へのポインターは、動的バインディングの柔軟性を提供しながら、特定のメンバー関数を保存および実行する便利な方法を提供します。ただし、これらの関数ポインターの呼び出しには、独自の構文があります。

非静的メンバー関数の場合、関数ポインターを呼び出すには、名前付きパラメーターと、関数ポインターが含まれるオブジェクトを表す this ポインターの両方を指定する必要があります。関数が呼び出されます。次の修正されたコードは、正しい構文を示しています。

typedef void (Box::*HitTest)(int x, int y, int w, int h);

for (std::list::<HitTest>::const_iterator i = hitTestList.begin(); i != hitTestList.end(); ++i)
{
    HitTest h = *i;
    (box->*h)(xPos, yPos, width, height);
}
ログイン後にコピー

ここで、box は、this ポインターとして機能する Box オブジェクトへのポインターです。 box->*h を使用すると、基本的に、box が指す特定の Box インスタンスでメンバー関数 h を呼び出します。

リストへのメンバー関数の追加に関して、修正されたコードは次のようになります。

std::list<HitTest> list;

for (std::list<Box*>::const_iterator i = boxList.begin(); i != boxList.end(); ++i)
{
    Box* box = *i;
    list.push_back(&Box::HitTest);
}
ログイン後にコピー

以上がC でメンバー関数へのポインターを正しく呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート