問題タブ [member-function-pointers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ でオーバーロードされたメンバー関数へのポインターを区別する
C++ テンプレート構造体でオーバーロードされたメンバー関数を区別したいと考えています。get_pointer
特殊化された構造体からの静的メソッドは、このメソッドが存在する場合distinguish_foo
にポインタを返す必要があります。それ以外の場合は、へのポインターを返します。
どうすればこれを達成できますか?derived::foo
pseudo::foo
c++ - (pointer-to)関数型として定義されている変数でmust have(pointer-to)関数型を取得する
文字列から関数へのポインタマップに格納されている任意の関数を呼び出すために使用される関数のtypedefを作成しています。この問題は、コード内の多くのオブジェクトを介して型が宣言および参照される方法に関係していると確信していますが、必要なことを実行する方法を考えることができる唯一の方法です。
これはfmap.hです。ここでfmapクラスとexecutefunctionsクラスを宣言します。関数ポインターのtypedefは、fmapのパブリックメンバーの最初の行にあります。
次はweb.hです。関連する部分だけを含めています。
今私が思うのはweb.cppの関連部分です
ついに。これがエラーが発生する場所です。エラー行の前に、発生しているエラーを説明する3行のコメントがあります。
誰でもできる助けをいただければ幸いです。
よろしくお願いします
c++ - 任意のクラスの任意のメンバー関数をコールバック関数として渡します
いくつかのボタンを含む OpenGL メニューに取り組んでいます。ボタンが押されたときに実行されるアクション(任意のクラスのメンバー関数(固定シグネチャ付き)!)をボタンに関連付けられるようにしたいと考えています。今すぐできるけど、1種類だけ。コールバックに任意のクラスの任意のメンバー関数を使用できるようにしたいと考えています。
今、私は次のようにしています:
次に、次のようなボタンを作成できます。
Callback 関数には次のシグネチャがあります。
ボタンを押すと、渡したコールバック関数を実行できます。
boost::bind を見てみましたが、問題に取り組む方法を実際に見つけることができませんでした。さらに、すべてのクラスはクラス Object から派生しているため、typeid ハックを使用して適切なクラスに変換できる void* について考えましたが、機能させることができませんでした。最後に、コールバック関数のクラスタイプを完全に削除できず(ボタンクラスに関数ポインターを保存するために必要です)、それでも関数を呼び出すことができるという問題が常にありました。
この問題に取り組む方法はありますか?
c - 構造体には、前述の構造体のポインターを取る関数への関数ポインターがあります..事前定義する必要がありますか?
関数ポインターを持つ構造体を作成しようとしています。その関数ポインターは、上記の構造体のポインターを取る関数を指します。プロトタイプは構造について知る必要があり、構造はプロトタイプについて知る必要があるため、これは実際のニワトリが先か卵が先かの問題です。構造体を事前定義する方法はありますか? 私はCが初めてなので、誰かが何か洞察を持っているなら、私はそれを大いに感謝します.
ありがとう、-devnull
c++ - クラスC++内の関数ポインタのテーブル
クラス内で関数ポインタのテーブルを作成しようとしています。私はこれの例をオンラインで見つけることができませんでした。ほとんどの場合、クラス外でメンバー関数ポインターを使用する必要があります。
例えば:
「termは0個の引数を取る関数に評価されません」というエラーが表示されます。
c++ - gccでテンプレート化されたメンバー関数にメンバー関数ポインターを渡す際に問題が発生しました
gcc でテンプレート化されたメンバー関数にメンバー関数ポインターを渡す際に問題が発生しています。以下のコードを変更して、gccが私がやろうとしていることを受け入れるようにする方法を知っている人はいますか?
コードをコンパイルしようとすると、次のエラーが発生します。
私が使用している gcc のバージョンは 4.4.2 です。
ご助力ありがとうございます!
c++ - 不明なクラスのメンバー関数を格納し、後で呼び出す
未知のクラスの関数を実行できるスレッドプールを作成しようとしています。非会員を代理人として作成する必要はありません。ワーキングプールとworkerthreadクラスとタスク構造を作成することができました。これらはすべてテンプレートです。
現状では、このコードは機能し、ThreadPoolとTaskのクラスを決定します。しかし、私は未知のクラスタイプのメンバーを呼び出すことができるようにしたいと思います。私は無効なptrを検討しましたが、これを有効なインスタンスptrに変換する方法を見つけることができませんでした。私もboost::mem_funを調べましたが、実際にそれを理解するのに苦労しました。
私はC++0xについて簡単に読んだことがあり、私が理解していることから、問題の解決が容易になるはずですが、可能であれば、その前にこれを解決したいと思います。
c++11 - C++0x 関数 <>、バインド、およびメンバー
Bjarne Stroustupsのテンプレートの説明に従ってみましたfunction
。私は特にc-function-pointers、functor、lambdas、member-function-pointersの互換性を試しました
定義を考えると:
可能なすべてのものに割り当てたいfunction<float(int,int)>
:
そして最後の行は、典型的な判読不能なコンパイラ テンプレート エラーを示します。ため息。
署名のみが残るようf
に、既存のインスタンス メンバー関数にバインドしたいと考えています。x
float(int,int)
の代わりに何をすべきか
...または他のどこにエラーがありますか?
バックグラウンド:
Bjarnesのメンバー関数を使用bind
した例を次に示します。function
このように使用されると思い bind
ました: 割り当てられていない場所は になりplaceholders
、残りは に埋められbind
ます。では、_1
ナットは を取得する必要がありますか? this
したがって、最後の行は次のようになります。
以下のハワードの提案で、私はそれを試しました:-)
c++ - キャストメンバ関数ポインタ
他のコードで使用される基底クラスの引数を受け取るメンバー関数ポインターを使用する必要があります。ええと、単純に、下の例のような[何か]をしたいのです。このコードは正常に動作しますが、そのようなキャストは常に安全なのだろうか? dynamic
ここで行うこともstatic
キャストすることもできません。