問題タブ [static-visitor]
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++ - ブースト:apply_visitorがこのコードで機能しないのはなぜですか
次のコンパイラエラーが発生します。
/usr/include/boost/variant/variant.hpp:832:32:エラー:'(const StartsWith)(bool&)'の呼び出しに一致しません</ p>
次のコードの場合。誰かが理由を知っていますか?
boost - boost apply::visitor -> 修飾子を破棄
どういうわけか const が正しくない boost::variant を使用してプログラムを作成しました。
エラー: 'const CompareTitle' を 'bool CompareTitle::operator()(const T1&, const T2&) [with T1 = TestSeizoen, T2 = TestSeizoen]' の 'this' 引数として渡すと、修飾子が破棄されます [-fpermissive]
[T1=TestFilm、T2=TestSeizouen] などでも同じエラーが発生します。
これはコードです:
operator() を const メンバー関数にしようとしましたが、これで問題は解決しませんでした。誰でも助けることができますか?必要に応じて、さらに情報を提供できます。前もって感謝します。
c++ - トラバース中に static_visitor に Boost 再帰バリアントを変更させますか?
ツリーを構築するために、Boost のバリアント型を広範囲に使用しています。より正確には、Boost の Qi を使用して文法からツリーを解析し、ツリーをトラバースして各ノードに整数で注釈を付けます。少なくともそれが私がやりたいことです。
static_visitor はポインターとしてノードを訪問しないため、値フィールドを変更できない可能性があることに気付きました。そのため、バリアント自体ではなく、バリアント型のポインターで static_visitor を機能させようとしました。
簡単な例:
しかし、うまくいきません。私がやろうとすると:
エラーが発生します:
static_visitor に自分のやりたいことをさせるにはどうすればよいですか? これを行うより良い方法はありますか?現時点で考えている唯一のアイデアは、ノード構造内のフィールドを int ではなく int へのポインターにすることです。
c++ - この訪問者の実装は正しいですか?
ブースト バリアント ライブラリで使用するために、ビジターを実装しています。boost::static_visitor<>
const 参照型で特殊化するのが正しいかどうかを知りたいです。
ここでの私の質問は次のとおりです。
に特化boost::static_visitor<>
した問題はありますboost::static_visitor<const T&>
か?
c++ - 静的ポリモーフィズム階層による静的ビジターの結合
私のプログラムの目的は、クラス階層で静的ポリモーフィズムを使用しながら、一連の静的ビジターでアクセスできるデータのリストを作成することです。
CRTP を介して静的ポリモーフィズムを利用するクラスの階層を作成しました。
DerivedBaseData を格納して、後で反復してアクセスできるようにしたいと考えています。
静的ビジターを静的ポリモーフィズム階層と結合する方法を探しています。コンテナーでクラスを使用するために、テンプレート クラスではない静的ポリモーフィズムで VirtualBaseData クラスが必要です。ただし、VirtualBaseData クラスをテンプレート クラスにすることができないため、CRTPattern で行ったように、適切な static_cast を派生クラスに作成することができません。
私の質問は、私の静的ポリモーフィズム設定と静的ビジター パターンを保持する優れた戦略を持っている人はいますか?
参考までに: http://hillside.net/plop/2006/Papers/Library/portableProgrammingPL.pdfの 21 ~ 23 ページで説明されているように、静的ビジターを実装しました。
c++ - ブースト::バリアント。boost::オーバーロードされた関数への訪問者
オーバーロードされた関数のバリアント値に問題があります。バリアントに格納されている内容に応じて、オーバーロードされた関数を int または string で呼び出したいと思います。これは私がやりたい方法ですが、できません:
ビジターを使用してそれを書くことは可能ですか、それとも次のようなことをするべきですか:
MyVisitor に可変引数を使用しようとしましたが、boost::static_visitor インターフェイスのために失敗しました。多分それに対する解決策があります。
関数の int z は、foo() パラメータに boost::variant だけがないことを示すためのものです。
c++ - boost::variant static_visitor を特定の型に適用する
次のバリアントがあります。
int
そして、 orfloat
型を型に変換するビジターを作成したいと考えていますbool
。
ただし、これによりエラーメッセージが表示されます:
'TypeVariant ConvertToBool::operator ()(float) const': 引数 1 を 'T' から 'float' に変換できません
訪問者が特定のタイプにのみ適用できるようにする正しい方法は何ですか?