問題タブ [functor]

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 に答える
1523 参照

c++ - 引数をバインドするファンクターを作成するためのブースト方法は何ですか

2つの引数を取り、文字列を返す関数ポインタが必要です。

1つの引数を取り、文字列を返す(つまり、引数の1つを破棄する)関数をラップするアダプターを渡したいと思います。

2つの引数を取り、1つの引数だけを渡すラップされた関数を呼び出す、独自のアダプターを簡単に作成できます。

しかし、C ++ / boostで簡単に作成できる方法がある場合は、その場でアダプターを作成する簡単な方法が必要ですか?

これをもう少し具体的にするための詳細を次に示します。

明らかに、GetRowTextを適応させて2つの引数を取り、最初の引数のみをGetRowText()自体に渡すメンバーを提供できます。

しかし、それを可能にするブーストバインダー/アダプターはすでにありますか?

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

c++ - ネストされたプライベート構造体を使用してファンクターを作成できますか?

このクラスを考えると:

ここでの考え方は、またはFoo構造体のfooListいずれかによってインデックスを作成できるということです。各キーでアイテムを検索できるように、渡すファンクタを作成しようとしています。しかし、クラス内でプライベートであるため、コンパイルすることはできません(Cのインターフェイスの一部ではありません)。 他の世界にさらされることなくこれを行う方法はありますか?key1key2std::find_iffooListFooFoo

Fooクラス内でプライベートであるためにコンパイルされないコードの例を次に示します。

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

c++ - テンプレートファンクターは参照型を推測できません

関数 func と func と同じ型のパラメーター t を取るファンクター f があります。コンパイル エラーのため、g を f に渡すことができません ( の呼び出しに一致する関数がありませんf(int&, void (&)(int&)))。g が非参照パラメーター g(int s) を取る場合、コンパイルは終了します。または、手動でテンプレート パラメータを指定するf<int&>(i, g)と、コンパイルも終了します。

控除を機能させるにはどうすればよいですか?

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

c++ - 匿名の一時関数オブジェクトをテンプレート化されたコンストラクターに渡す際の問題

テンプレート化されたクラスの破棄時に呼び出される関数オブジェクトをアタッチしようとしています。ただし、関数オブジェクトを一時的に渡すことができないようです。私が得る警告は次のとおりです(コメント行の場合xi.data = 5;):

構築されたオブジェクトを使用しようとすると、次のようなコンパイル エラーが発生します。

長いコードで申し訳ありませんが、状況を評価するにはすべてのコンポーネントを表示する必要があると思います。

私がこれを試している理由は、関数オブジェクト自体のインスタンスをクラス内に保持することなく、関数オブジェクト型をオブジェクトに「何らかの方法で」アタッチできるようにするためです。したがって、 のオブジェクトを作成するとき、 のオブジェクトclass Xをその中に保持する必要はなくclass writer、 へのポインターのみを保持する必要があります (ここがBase<T>必要かどうかはわかりません<T>が、今のところそこにあります)。

問題は、のオブジェクトを作成してから、のように呼び出すのではなくwriter、のコンストラクターに渡す必要があるように見えることですXX<int> xi(writer();

ここで完全にばかげて明白なものを見落としている可能性があります。何か提案はありますか?

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

scala - Scalaでオブジェクトをモジュール/ファンクターとして使用するには?

以下に示すように、多かれ少なかれオブジェクトインスタンスをモジュール/ファンクターとして使用したい:

格子ごとに異なる微積分インスタンスを作成できるようにします (実行する操作には、格子の最大値と最小値の情報が必要です)。同じ微積分の式を混合できるようにしたいが、異なる式を混合することは許可されていません。ここまでは順調ですね。微積分インスタンスを作成できますが、問題は、それらを操作する他のクラスに関数を記述できないことです。

たとえば、ファイルから式を読み取って返すパーサーを作成しようとしています。また、ScalaCheck を使用したテストで使用するランダム式ジェネレーターを作成しようとしていました。関数が Expr オブジェクトを生成するたびに、関数の外では使用できないことがわかりました。Calculus インスタンスを作成し、Expr オブジェクトを生成する関数に引数として渡しても、関数の戻り値は、関数の外部で作成されたオブジェクトと同じ型として認識されません。

多分私の英語は十分に明確ではありません.私がやりたいことのおもちゃの例を試してみましょう.

さて、上記のコードをコンパイルしようとすると、たくさんの

次のようなことをしようとすると、同じことが起こります。

ジェネレーター自体は問題ではありませんが、システムの残りの部分で同様のこと (つまり、微積分インスタンス式の作成と操作) を行う必要があることに注意してください。

私は何か間違ったことをしていますか?私がやりたいことをすることは可能ですか?

この問題に関するヘルプは非常に必要であり、高く評価されています. よろしくお願いします。


Apocalisp から回答を受け取り、試した後。

回答ありがとうございます。ただし、まだいくつかの問題があります。提案された解決策は、関数の署名を次のように変更することでした。

関連するすべての関数 (getRndExpr、getRndVal、および getRndVar) の署名を変更しました。そして、これらの関数を呼び出すすべての場所で同じエラー メッセージが表示され、次のエラー メッセージが表示されました。

コンパイラが正しい型を判断できないように見えたので、すべての関数呼び出しを次のように変更しました。

この後、最初の 2 回の関数呼び出し (genRndVal と genRndVar) ではコンパイル エラーは発生しませんでしたが、次の 3 回の呼び出し (genRndExpr への再帰呼び出し) では、関数の戻り値を使用して新しい Expr オブジェクトを作成します。次のエラー:

だから、また行き詰まった。どんな助けでも大歓迎です。

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

c++ - トレイトからconstまたはnon-const参照型を取得します

void(* func)(T)型とfuncの引数argの関数をとるファンクターFを書いています。

次に、ファンクターFはargを使用してfuncを呼び出します。Fはargをコピーせず、参照として渡すだけにします。しかし、Tが参照になる可能性があるため、単純に「void F(void(* func)(T)、T&)」と書くことはできません。だから私はTの適切な参照型を取得することを可能にする特性を書き込もうとしています:

私はこのようなものを思いつきます:

たとえば、これは機能しません

エラーの発生:「voidF(void(*)(T)、typename type_op :: valid_ref_type)[with T = int]'</ p>

この特性を機能させる方法は?

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

c++ - 標準の削除ファンクターはありますか?

引数を削除するファンクタを探しています:

stdtr1またはにこのようなものはありboostますか?

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

c++ - C++構造体の並べ替えエラー

C++でカスタム構造体のベクトルを並べ替えようとしています

シンプルなファンクターで

しようとすると:

例外「無効な演算子<」が表示されます

このエラーの意味は何ですか?

ありがとう

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

c++ - boost :: bindを使用して関数を効果的に連結することは可能ですか?

typeと呼ばれる任意のシグネチャを持つboost::functionがあると仮定しCallbackTypeます。

  • boost::bindCallbackTypeと同じ引数を取りながら、2つのファンクターを連続して呼び出す関数を作成するために使用することは可能ですか?

私はどんな潜在的な解決策にもオープンですが、ここに...

magic...いくつかのテンプレートを使用した架空の例:

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

c++ - C ++のテンプレート、ファンクター、コールバック関数の練習問題?

私はこの 1 週間、テンプレート、ファンクター、コールバック関数を読んでいて、いくつかの良い本や記事を参照しました。

ただし、テンプレートでのプログラミングやファンクター コールバックの使用などの優れた実践ができない限り、すべての概念を本当に理解したり、コーディング中にそれらを流暢に使用したりすることはできないと感じています。

問題の定義とその解決策が記載されている記事、本、またはウェブサイトを誰か提案できますか。問題のコードを書いて、後で解決策が十分かどうかを確認することができます..

また、スタック オーバーフロー メンバーの一部がテンプレートとコールバック関数の専門家であることも認識しています。私のような多くのテンプレート初心者が恩恵を受けることができるように、彼らが問題を設計し、解決策を投稿できれば素晴らしいと思います.