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

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

c++ - ブースト:apply_visitorがこのコードで機能しないのはなぜですか

次のコンパイラエラーが発生します。

/usr/include/boost/variant/variant.hpp:832:32:エラー:'(const StartsWith)(bool&)'の呼び出しに一致しません</ p>

次のコードの場合。誰かが理由を知っていますか?

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

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 メンバー関数にしようとしましたが、これで問題は解決しませんでした。誰でも助けることができますか?必要に応じて、さらに情報を提供できます。前もって感謝します。

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

c++ - トラバース中に static_visitor に Boost 再帰バリアントを変更させますか?

ツリーを構築するために、Boost のバリアント型を広範囲に使用しています。より正確には、Boost の Qi を使用して文法からツリーを解析し、ツリーをトラバースして各ノードに整数で注釈を付けます。少なくともそれが私がやりたいことです。

static_visitor はポインターとしてノードを訪問しないため、値フィールドを変更できない可能性があることに気付きました。そのため、バリアント自体ではなく、バリアント型のポインターで static_visitor を機能させようとしました。

簡単な例:

しかし、うまくいきません。私がやろうとすると:

エラーが発生します:

static_visitor に自分のやりたいことをさせるにはどうすればよいですか? これを行うより良い方法はありますか?現時点で考えている唯一のアイデアは、ノード構造内のフィールドを int ではなく int へのポインターにすることです。

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

c++ - この訪問者の実装は正しいですか?

ブースト バリアント ライブラリで使用するために、ビジターを実装しています。boost::static_visitor<>const 参照型で特殊化するのが正しいかどうかを知りたいです。

ここでの私の質問は次のとおりです。

に特化boost::static_visitor<>した問題はありますboost::static_visitor<const T&>か?

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

c++ - 静的ポリモーフィズム階層による静的ビジターの結合

私のプログラムの目的は、クラス階層で静的ポリモーフィズムを使用しながら、一連の静的ビジターでアクセスできるデータのリストを作成することです。

CRTP を介して静的ポリモーフィズムを利用するクラスの階層を作成しました。

DerivedBaseData を格納して、後で反復してアクセスできるようにしたいと考えています。

静的ビジターを静的ポリモーフィズム階層と結合する方法を探しています。コンテナーでクラスを使用するために、テンプレート クラスではない静的ポリモーフィズムで VirtualBaseData クラスが必要です。ただし、VirtualBaseData クラスをテンプレート クラスにすることができないため、CRTPattern で行ったように、適切な static_cast を派生クラスに作成することができません。

私の質問は、私の静的ポリモーフィズム設定と静的ビジター パターンを保持する優れた戦略を持っている人はいますか?

参考までに: http://hillside.net/plop/2006/Papers/Library/portableProgrammingPL.pdfの 21 ~ 23 ページで説明されているように、静的ビジターを実装しました。

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

c++ - ブースト::バリアント。boost::オーバーロードされた関数への訪問者

オーバーロードされた関数のバリアント値に問題があります。バリアントに格納されている内容に応じて、オーバーロードされた関数を int または string で呼び出したいと思います。これは私がやりたい方法ですが、できません:

ビジターを使用してそれを書くことは可能ですか、それとも次のようなことをするべきですか:

MyVisitor に可変引数を使用しようとしましたが、boost::static_visitor インターフェイスのために失敗しました。多分それに対する解決策があります。

関数の int z は、foo() パラメータに boost::variant だけがないことを示すためのものです。

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

c++ - boost::variant static_visitor を特定の型に適用する

次のバリアントがあります。

intそして、 orfloat型を型に変換するビジターを作成したいと考えていますbool

ただし、これによりエラーメッセージが表示されます:

'TypeVariant ConvertToBool::operator ()(float) const': 引数 1 を 'T' から 'float' に変換できません

訪問者が特定のタイプにのみ適用できるようにする正しい方法は何ですか?