問題タブ [apply-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 コンパイル エラー
boost::variant と boost::apply_visitor の簡単なサンプル コード:
次のコンパイル エラーが発生します。
Boost バージョン 1.55.0 を使用する Mac OSX Mavericks の場合。
私の人生では、問題を理解することはできません。私は実際に戻り値の型を持ってみました (印刷ビジターには必要ありませんが) が、同じエラーが発生しました。
任意の洞察をいただければ幸いです。
c++ - boost::apply_visitor を使用してベクトル化するバリアント ピクセル バッファ
ブーストで apply_visitor を使用して、 variablepixelbuffer.vbuffer() を double 値のベクトルに変換しようとしています。
私は今までこのコードを持ってきました:
しかし、私はいくつかの長いエラーが発生しており、その一部は
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:60:43:
'typename Visitor::result_type boost::apply_visitor(Visitor&, Visitable&) から必要 [with Visitor = MinMaxVisitor; Visitable = boost::variant >、boost::mpl::v_item >、boost::mpl::v_item、boost::mpl::v_item >、boost::mpl::v_item >、boost::mpl::v_item >、boost::mpl::v_item 、boost::mpl::v_item 、boost::mpl:: v_item 、ブースト::mpl::v_item
detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_>; typename Visitor::result_type = std::vector >]' read_subimage.C:82:85: ここから必要 /usr/include/c++/4.8/bits/stl_algo.h:4417:14: エラー: ' を使用する必要があります。void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_, boost::detail::variant::void_>; typename Visitor::result_type = std::vector >]' read_subimage.C:82:85: ここから必要 /usr/include/c++/4.8/bits/stl_algo.h:4417:14: エラー: ' を使用する必要があります。void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_, boost::detail::variant::void_>; typename Visitor::result_type = std::vector >]' read_subimage.C:82:85: ここから必要 /usr/include/c++/4.8/bits/stl_algo.h:4417:14: エラー: ' を使用する必要があります。boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_>; typename Visitor::result_type = std::vector >]' read_subimage.C:82:85: ここから必要 /usr/include/c++/4.8/bits/stl_algo.h:4417:14: エラー: ' を使用する必要があります。boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_>; typename Visitor::result_type = std::vector >]' read_subimage.C:82:85: ここから必要 /usr/include/c++/4.8/bits/stl_algo.h:4417:14: エラー: ' を使用する必要があります。'または '-> ' '__f (...)' でメンバーへのポインタ関数を呼び出す場合、例: '(... ->* __f) (...)'</p>
どうすればこれを解決できますか。ピクセルバッファデータを vector に取得する必要があります。
c++ - boost::variant ビジターでの冗長なコードの回避
私は次の問題に直面しています:私はboost::variantのために何人かの訪問者を持っています。
すべての訪問者で常に同じです。この冗長なメソッドをすべての訪問者に記述したくないので、このメソッドを実装する共通の基本クラスをすべての訪問者に追加することを避けようとしました。次のように、メソッドがビジター自体を再帰的に呼び出す問題:
メンバーに一致する他のすべてのメソッドが基本クラスに実装されていないため、これでコンパイラ エラーが発生します。私の質問は、冗長なコードを削除するにはどうすればよいですか?
問題がどのように見えるかの例を次に示します。