問題タブ [boost-any]

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 投票する
2 に答える
1492 参照

c++ - boost :: any、バリアント、それらの配列に基づく関数の呼び出し

次のような一連の関数が与えられます。

いくつかのバリアント型の配列を取得し、その内容を指定して、正しい関数を起動することは可能ですか?このための私のアプリケーションは、パラメーターXのセットを別のプロセスに渡したいというものです。このプロセスでは、単一のポインターを渡すオプションしかありません。私のアイデアは、std :: vector <boost :: any>へのポインターを送信し、その内容を指定して上記のメソッドのどれを起動するかを何らかの方法で解決することでした。

これは、クロススレッドのイベントと通信に関する私の実験に関係しているため、不必要に難解に見えるかもしれません。

編集:わかりました、たとえば、これは意図です。明らかにコンパイルされません(テンプレートの解決はコンパイル時に行われますが、実行時に呼び出す関数を決定したいです!):

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

c++ - boost :: any?のリストの多形演算子

list<boost::any>不明なタイプが含まれているタイプのリストがあるとします。ここで、多形であるリスト内の要素に何らかの操作を適用したいとします。この場合、+演算子を検討してください。リストには常にoperator+をサポートする同種のオブジェクトのセットが含まれていることがわかっていて、リストの各要素の間にoperator +(ある意味では「合計」)を適用した結果を新しいブーストに取得したいとします。どれか。このようなもの:

operator +をサポートできる可能性のあるすべてのタイプを列挙せずに、これを行う方法はありますか?私はクレイジーなアイデアを非常に受け入れています。

(私は本当にこれを行う理由があります...私はインタプリタを実装しています)

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

c++ - boost::比較値はありますか?

boost::any のベクトルがあり、このベクトルで「any」のインデックスを見つけたいと考えています。

このようなもの :

このために、次の方法で 2 つの任意の値を比較しようとします。

問題は、エニーキャストを実行すると、特定のタイプにのみキャストされ、基本タイプを気にしないことです:

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

c++ - c++ boost::any 独自の print を定義するには、

boost::any最初にテンプレートを使用して任意のタイプを印刷できる印刷機能を作成する方法を見つけるのに苦労しています。

最初に を定義する必要がありますprint()。私は任意のものを実数にしたいと思っています。アイデアは簡単です。適切な T を持つoperator <<クラスのインスタンスを各任意のオブジェクトにアタッチし 、値の型が変更されたときにこのオブジェクトを変更します。最初の技術的な問題は、プリンター オブジェクトが T に依存しているのに対し、any はクラス テンプレートではない (また、そうであってはならない) ことです。printer<T>any

今夜か明日のために本当に手を貸してください明日の締め切りがありますが、今夜それを処理したいと思います。

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

c++ - boost::variantとboost::any workはどのように機能しますか?

バリアントおよびBoostライブラリのいずれかは内部でどのように機能しますか?私が取り組んでいるプロジェクトでは、現在タグ付き共用体を使用しています。C ++の共用体では、コンストラクタ、デストラクタ、またはオーバーロードされた代入演算子でオブジェクトを使用できないため、別のものを使用したいと思います。

anyとvariantのサイズを照会し、それらを使用していくつかの実験を行いました。私のプラットフォームでは、バリアントは可能な限り長いタイプに8バイトを加えたサイズを取ります。タイプ情報は8バイトで、残りはプリペイドカードだと思います。一方、どれも8バイトしかかかりません。私は64ビットプラットフォームを使用しているので、ポインタを保持しているだけだと思います。

誰がそれがどんなタイプを持っているかをどうやって知るのですか?Variantは、テンプレートを介してどのように機能を実現しますか?これらのクラスを使用する前に、これらのクラスについて詳しく知りたいと思います。

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

c++ - boost::any に似たクラスの値へのアクセス

教育目的でシンプルboost::anyなクラスを作成していますが、保存された値にアクセスする方法がわかりません。値を完全に設定できますが、「ホルダー」クラスのメンバーにアクセスしようとすると、コンパイラーは、派生元のクラスにメンバーが見つからないと文句を言うだけです。virtualテンプレートのため、メンバーを宣言できません。

関連するコードは次のとおりです。

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

c++ - boost::anyを使用したエラーC2451

Visual Studio 2010を使用して文字列をテストすると、print()で次のエラーが発生します。

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

c++ - boost::program_options での欠落/間違ったキーの処理の改善

次のような呼び出しが失敗したときに、どのキーが関係していたかを知る方法はありますか?

キーがマップにない場合、または int に変換できない場合は、かなり情報に乏しい bad_any_cast が返され、次のいずれかを知ることができません。

  • 関係する鍵
  • 保存された値、またはそこにある場合でも。
  • 関与するタイプ

ブーストヘッダーを変更したり、上記へのすべての呼び出しを try..catch ブロックにラップしたりする必要のない解決策は見つかりません。これは一般的な問題だと思うので、他の誰かがより良いアプローチを知っているかもしれません。

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

c++ - ブーストのようなクラスを実装する

次の質問から受け入れられた回答に従って、私のおもちゃの言語でboost::anyをエミュレートしようとしています。

boost::any に似たクラスの値へのアクセス

私は持てます、

+ をオーバーロードしたいので、

しかし、実行時に e1 が int を保持するか double を保持するかはわかりませんが、数値になります。では、正しい Get メソッドを呼び出すことができるように、どのような種類の要素が保持されているかを示す変数も保存されるように const を変更するにはどうすればよいでしょうか。

また、例外がなく、-fno-rtti をコンパイラに渡し、stdlib または boost を使用できないマイクロプロセッサでこれを行っています。

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

c++ - なぜブーストしないのですか::誰もが「ゲッター」を持っていますか?

使用するboost::anyことは非常に便利ですが、ゲッターがないことは非常にany_cast気のめいることであり、必要なタイプにキャストするために常に使用する必要があります。しかし、なぜそれはそのようなものがないのですか?私の意見では、以下の1つが有用なメンバーになる可能性があります。見えない悪いところはありますか?

編集:

私が見る唯一の悪いことは、このゲッターには代入演算子が必要だということです。