問題タブ [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.

0 投票する
1 に答える
1928 参照

c - C ライブラリを Objective-C でラップする - 関数ポインタ

Objective-C で C ライブラリのラッパーを作成しています。このライブラリを使用すると、特定のイベントが発生したときにコールバック関数を登録できます。

register_callback_handler() 関数は、パラメーターの 1 つとして関数ポインターを取ります。

プログラミングの達人への私の質問は次のとおりです。Objective-C メソッド呼び出し/セレクターを関数ポインターとして表現するにはどうすればよいですか?

  • NSInvocation は、この状況で役立つものでしょうか、それともレベルが高すぎますか?
  • メソッド呼び出しが記述された C 関数を記述し、その関数へのポインタを渡す方がよいでしょうか?

どんな助けでも素晴らしいでしょう、ありがとう。

0 投票する
3 に答える
1170 参照

c++ - std::sin(const valarray を参照する方法&)?

valarray関数のポインター コードで問題が発生しています。

最初はコンパイルされ、2 番目は次のようになります。

0 投票する
3 に答える
2809 参照

c++ - boost::function::target を使用して関数ポインタを取得するときの null ポインタ

この回答を読んだ後、解決策があると思いました。少なくとも私がやりたいことはありますが、実装に問題があります。

ここに私がやろうとしていることの概要があります

プログラムはエラーや警告なしでコンパイルされますが、f.target(); から null ポインター (fpt) が返されます。実行時に。上記のスタックオーバーフローの質問にリンクされている参照から、ブーストがランタイム変換を実行できない場合、null ポインターが返されるようです。しかし、Boost がランタイム変換を実行できない理由がわかりません。何か案は?

0 投票する
6 に答える
54731 参照

c - Cで「プライベート/制限付き」機能を実装するには?

C のインタビューで非常に興味深い質問をされました。特定の g() 関数からのみ呼び出すことができるように、関数 f() をどのように実装できますか。g() 以外の関数が f() を呼び出そうとすると、コンパイラ エラーが発生します。

最初は、関数ポインターを使用してこれを実行できると思っていましたが、実行時に呼び出しをブロックすることに近づくことができました。しかし、コンパイル時の戦略を考えることができませんでした。ansi Cを使用してこれが可能かどうかさえわかりません。

誰にもアイデアはありますか?

0 投票する
2 に答える
1876 参照

c++ - ブーストバインド/機能のヘルプ

私はこの関数の署名を持っています私は一致しなければなりません

これが私がこれまでに持っているものです:

ただし、ではlua_register(_luaState...、まだ変換の問題について不平を言っています

エラー1エラーC2664:'lua_pushcclosure':パラメーター2を'boost::function'から'lua_CFunction'に変換できません

誰もがこれを解決する方法を知っていますか?

0 投票する
6 に答える
7636 参照

c++ - list::sort の C++ カスタム比較関数

こんにちは、単純なコードのコンパイルに問題があります。カードのデッキを実装するクラスを作成しており、list::short メソッドを使用してシャッフル メソッドを作成したいと考えています。

関連コード:

デッキ.h

デッキ.cc:

コンパイラは次のメッセージを表示します (行番号は無視します)。

問題は、私が正しく使用していないcompareRandom参照にある必要があります。この問題に対する答えをグーグルで見つけることはできません。

前もって感謝します。

0 投票する
2 に答える
5754 参照

c++ - C /C++でのLua関数への参照

一連のテーブルに比較的深くネストされた関数があります。C / C ++で、その関数への「参照」を取得し、それを使用する必要があるときにそれ(および引数)をスタックにプッシュする方法はありますか?

0 投票する
5 に答える
3493 参照

c++ - C/C++ で raw ポインターと関数ポインターによってサポートされる操作は何ですか?

関数ポインタでサポートされているすべての操作は、生のポインタとは異なりますか? > 、 < 、 <= 、 >= 演算子は生のポインタでサポートされていますか? もしそうなら、その用途は何ですか?

0 投票する
3 に答える
1240 参照

c++ - 条件演算子は、オーバーロードされたメンバー関数ポインターを解決できません

C++ でオーバーロードされたメンバー関数へのポインターを処理する際に小さな問題があります。次のコードは正常にコンパイルされます。

しかし、これはコンパイルされません (コンパイラはオーバーロードがあいまいであると不平を言います):

おそらくこれは、コンパイラが条件演算子の戻り値を関数ポインタ型とは別に分類することに関係しているのでしょうか? 私はそれを回避することができますが、仕様がどのように機能することになっているのかを知りたいと思っています。 .

それが違いを生む場合、私はMSVC ++を使用しています。

ありがとう!

0 投票する
4 に答える
3065 参照

c++ - C++ メンバー関数ポインターと STL アルゴリズム

operator() をオーバーロードする抽象ファンクター クラスと、それを実装する派生オブジェクトがあります。

これらのファンクター クラスの配列を取り、メンバー関数へのポインターを std アルゴリズム for_each() に渡そうとする関数 (別のクラスの一部) があります。

編集:私はそれを再洗浄し、明確にするために古い小さな例を入れました。

いくつかの方法を試しましたが、それを機能させる方法がわかりません。異なる派生型を持つことができるため、抽象型を使用する必要がありますが、それらはすべて同じ operator()(param x を実装する必要があります) 関数。

メンバ関数 operator()(param x) を呼び出せるようにするには、for_each() 関数が必要です。具体的な実装があり、それらのインスタンスを渡すだけで機能する別の関数があります。ここで同様の効果を達成しようとしていますが、どの具体的なクラスが与えられているかを知りません。

私は何を間違っていますか?