0

私はC ++の初心者で、運が良ければグーグルで検索してこれに対する答えを見つけようとしましたが、役に立ちませんでした。ほとんどの場合、これは愚かな質問です。

関数ポインターとその構文を理解するのにいつも苦労しています。

本格的なコードでこれを使用するのはこれが初めてです。

私はこのようなシングルトンクラスを持っています。Singleton メソッドは示されていません。

class Derived:public base
{
    int fn();
    // This function has a single argument which 
    // is function pointer to any of the base class
    // function having same argument/return type of 
    // the singleton object.
};

class base
{
   public:
   int ConvertIntIndex(const unsigned int Index);
   int ConvertStringIndex(const unsigned int Index);
   int ConvertOidIndex(const unsigned int Index);
}

シングルトンオブジェクトを介してこれを宣言するfn()方法と呼び出す方法。さまざまなオプションを試しましたが、これをコンパイルすることさえできませんでした。非常に多くのエラーが発生したため、必要に応じてそれらの詳細を投稿します。私は苦労しています。存在する場合、誰かが重複を助けたり指摘したりできますか? この投稿があれば削除します。

ありがとう。

4

3 に答える 3

1

私はあなたがこれを探していると思います:

class Derived: public base
{
    int fn(int (base::*arg)(unsigned int));
};

内部fnでは、次のように使用しますarg

return (this->*arg)(7);

構文は、メンバー関数へのポインターをint (base::*p)(unsigned int)作成します。これをオブジェクトへのポインター(または参照)とともに使用して、メンバー関数を呼び出します。ポインターを逆参照するには、オブジェクトへのポインター、またはオブジェクト自体でuseを使用します。->*.*

于 2013-02-05T15:59:32.020 に答える
0

メンバー関数へのポインタですか?次に試してください:(コメントで修正)。fpを呼び出すためのベースオブジェクトが必要です

typedef double (base::*bfptr)(double);

int fn(bfptr fp);
于 2013-02-05T13:53:21.607 に答える
0

への引数として基底クラスのポインタを渡すことができますfn()。エラーメッセージも投稿してみませんか?

于 2013-02-05T12:17:53.907 に答える