boost::variant を使用しようとしています
std::vector<boost::variant<mesh::Entity&, mesh::Vertex, mesh::Edge> >
xField::getZeros(const mesh::Region& s, char *EntityS) const
{
//Vertex
if( EntityS == "V" )
{
std::vector<mesh::Vertex> zeros;
for(Region::vertexIterator itv = s.beginVertex();
itv != s.endVertex(); ++itv )
{
if( abs(getVal(*itv)) < 1.e-12 )
zeros.push_back(*itv);
}
return zeros;
}
else if ..
しかし、私はエラーを受け取ります: エラー: 'std::vector' から非スカラー型 'std::vector >' への変換が要求されました
編集:
zeroVector xField::getZeros(const mesh::Region& s, char *EntityS) const
{
//Vertex
if( EntityS == "V" )
{
zeroVector zeros;
for(Region::vertexIterator itv = s.beginVertex(); itv != s.endVertex(); ++itv )
{
if( abs(getVal(*itv)) < 1.e-12 )
zeros.push_back( zeroVariant(*itv) );
}
return zeros;
.h ファイルで typedef を定義します
typedef boost::variant<mesh::Entity&, mesh::Vertex, mesh::Edge> zeroVariant;
typedef std::vector<zeroVariant> zeroVector;
そして今、私は次のエラーを持っています:
/softs/boost/1.53.0/64/gcc/4.5.1/include/boost/detail/reference_content.hpp: メンバー関数内 'void boost::detail::variant::assign_storage::internal_visit(T&, int) const [with T = boost::detail::reference_content]': /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/detail/visitation_impl.hpp:130:9: からインスタンス化'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke_impl(int, Visitor&, VoidPtrCV, T*, mpl_::true_) [with Visitor = boost::detail::variant::assign_storage, VoidPtrCV = void* 、T = boost::detail::reference_content、typename Visitor::result_type = void、mpl_::true_ = mpl_::bool_]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost /variant/detail/visitation_impl.hpp:173:9: 'typename Visitor::result_type boost::detail::variant::visitation_impl_invoke(int, Visitor&, VoidPtrCV, T*, からインスタンス化NoBackupFlag, int) [with Visitor = boost::detail::variant::assign_storage, VoidPtrCV = void*, T = boost::detail::reference_content, NoBackupFlag = boost::variant::has_fallback_type_, タイプ名 Visitor::result_type = void]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/detail/visitation_impl.hpp:260:1: 'typename Visitor::result_type boost::detail:: からインスタンス化variant::visitation_impl(int, int, Visitor&, VoidPtrCV, mpl_::false_, NoBackupFlag, which*, step0*) [with which = mpl_::int_<0>, step0 = boost::detail::variant::visitation_impl_step 、boost::detail::reference_content、boost::mpl::l_item、mesh::Vertex、boost::mpl::l_item、mesh::Edge、boost::mpl::l_end> > > >、boost:: mpl::l_iter >, Visitor = boost::detail::variant::assign_storage, VoidPtrCV = void*, NoBackupFlag = boost::variant::has_fallback_type_,typename Visitor::result_type = void, mpl_::false_ = mpl_::bool_]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/variant.hpp:2326:13: 'static typename Visitor::result_type boost::variant::internal_apply_visitor_impl(int, int, Visitor&, VoidPtrCV) からインスタンス化 [with Visitor = boost::detail::variant::assign_storage, VoidPtrCV = void*, T0_ = mesh::エンティティ&、T1 = メッシュ::頂点、T2 = メッシュ::エッジ、T3 = ブースト::ディテール::バリアント::ボイド_、T4 = ブースト::ディテール::バリアント::ボイド_、T5 = ブースト::ディテール:: variant::void_、T6 = boost::detail::variant::void_、T7 = boost::detail::variant::void_、T8 = boost::detail::variant::void_、T9 = boost::detail ::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost: :detail::variant::void_, T14 = boost::detail::variant::void_,T15 = boost::detail::variant::void_、T16 = boost::detail::variant::void_、T17 = boost::detail::variant::void_、T18 = boost::detail::variant:: void_, T19 = boost::detail::variant::void_, typename Visitor::result_type = void]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/variant.hpp :2337:13: 'typename Visitor::result_type boost::variant::internal_apply_visitor(Visitor&) からインスタンス化 [with Visitor = boost::detail::variant::assign_storage, T0_ = mesh::Entity&, T1 = mesh::頂点、T2 = mesh::Edge、T3 = boost::detail::variant::void_、T4 = boost::detail::variant::void_、T5 = boost::detail::variant::void_、T6 = boost::detail::variant::void_ boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_、T11 = boost::detail::variant::void_、T12 = boost::detail::variant::void_、T13 = boost::detail::variant::void_、T14 = boost::detail::variant::void_、T15 = boost::detail::variant::void_、T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_, typename Visitor::result_type = void]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/variant.hpp:2085:13: 'void boost::variant:: からインスタンス化variant_assign(const boost::variant&) [with T0_ = mesh::Entity&、T1 = mesh::Vertex、T2 = mesh::Edge、T3 = boost::detail::variant::void_、T4 = boost::detail ::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost: :detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_、T12 = boost::detail::variant::void_、T13 = boost::detail::variant::void_、T14 = boost::detail::variant::void_、T15 = boost::detail ::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost: :detail::variant::void_, boost::variant = boost::variant]' /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/variant.hpp:2175:9 : 'boost::variant& boost::variant::operator=(const boost::variant&) からインスタンス化 [with T0_ = mesh::Entity&, T1 = mesh::Vertex, T2 = mesh::Edge, T3 = boost: :detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = ブースト::詳細::バリアント::void_ boost::detail::variant::void_、T8 = boost::detail::variant::void_、T9 = boost::detail::variant::void_、T10 = boost::detail::variant::void_、T11 = boost::detail::variant::void_、T12 = boost::detail::variant::void_、T13 = boost::detail::variant::void_、T14 = boost::detail ::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost: :detail::variant::void_, T19 = boost::detail::variant::void_, boost::variant = boost::variant]' /usr/include/c++/4.5/bits/vector.tcc:312: 4: 'void std::vector<_Tp, _Alloc>::_M_insert_aux(std::vector<_Tp, _Alloc>::iterator, const _Tp&) からインスタンス化 [ with _Tp = boost::variant, _Alloc = std::allocator >, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator*, std::vector > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = boost::variant* ]' /usr/include/c++/4.5/bits/stl_vector.h:749:4:「void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = boost::variant, _Alloc = std::allocator >, value_type = boost::variant]」/home/mycode. cc:128:42: ここからインスタンス化 /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/detail/reference_content.hpp:62:24: エラー: 'boost::detail::reference_content& boost::detail::reference_content::operator=(const boost::detail::reference_content&) [with RefT = mesh::Entity&, boost::detail::reference_content = boost::detail::reference_content]' はプライベート / softs/boost/1.53.0/64/gcc/4.5.1/include/boost/variant/variant.hpp:526:9: エラー: このコンテキスト内ここからインスタンス化 /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/detail/reference_content.hpp:62:24: エラー: 'boost::detail::reference_content& boost::detail:: reference_content::operator=(const boost::detail::reference_content&) [with RefT = mesh::Entity&, boost::detail::reference_content = boost::detail::reference_content]' はプライベート /softs/boost/1.53 です。 0/64/gcc/4.5.1/include/boost/variant/variant.hpp:526:9: エラー: このコンテキスト内ここからインスタンス化 /softs/boost/1.53.0/64/gcc/4.5.1/include/boost/detail/reference_content.hpp:62:24: エラー: 'boost::detail::reference_content& boost::detail:: reference_content::operator=(const boost::detail::reference_content&) [with RefT = mesh::Entity&, boost::detail::reference_content = boost::detail::reference_content]' はプライベート /softs/boost/1.53 です。 0/64/gcc/4.5.1/include/boost/variant/variant.hpp:526:9: エラー: このコンテキスト内1/include/boost/variant/variant.hpp:526:9: エラー: このコンテキスト内1/include/boost/variant/variant.hpp:526:9: エラー: このコンテキスト内
前もって感謝します!!!!!