Я пытаюсь использовать подталкивание :: вариантвектора повышающего-варианта
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 ..
, но я получаю сообщение об ошибке: ошибки: преобразование из «станд :: вектор» к нескалярных типа «станд :: вектор>»просил
EDIT:
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 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: В функции члена «недействительным boost :: detail :: variant :: assign_storage :: internal_visit (T &, int) const [с 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_) [с 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) [с Visitor = boost :: detail :: variant :: assign_storage, VoidPtrCV = void *, T = boost :: detail :: reference_content, NoBackupFlag = boost :: variant :: has_fallback_type_, typename 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, который * , step0 *) [with Which = mpl _ :: int_ < 0>, step0 = boost :: detail :: variant :: visitation_impl_step, boost :: detail :: reference_cont ent, boost :: mpl :: l_item, mesh :: Vertex, boost :: mpl :: l_item, mesh :: Edge, boost :: mpl :: l_end>>>>, boost :: mpl :: l_iter>, посетитель = 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, посетитель &, VoidPtrCV) [с Visitor = boost :: detail :: variant :: assign_storage, VoidPtrCV = void *, 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_, T 10 = 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 = boost :: detail :: variant :: assign_storage, 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 :: Вариант :: 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 &) [с T0_ = сетка :: 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/inclu de/boost/variant/variant.hpp: 2175: 9: экземпляр из «boost :: variant» & boost :: variant :: operator = (const boost :: variant &) [с 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 :: Вариант :: 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/бит/vector.tcc: 312: 4: экземпляр из 'void std :: vector < _Tp, _Alloc> :: _ M_insert_aux (std :: vector < _Tp, _Alloc> :: iterator, const _Tp &) [с _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 &) [с _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 &) [с 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: ошибка: в этом контексте
спасибо заранее !!!!!
спасибо, но когда я определяю «EvVariantVector xField :: getZeros (const mesh :: Region & s, char * EntityS) const« в файле .h, но в .cpp-файле он не распознает «EvVariantVector», и я получил следующая ошибка: ошибка: 'boost :: detail :: reference_content & boost :: detail :: reference_content :: operator = (const boost :: detail :: reference_content &) [с RefT = mesh :: Entity &, boost :: detail :: reference_content = boost :: detail :: reference_content ] 'является закрытым –
Где вы помещаете typedef и можете ли cpp увидеть его? Поместите typedef в файл h. – Pete
ах только что увидел ваше изменение на вопрос ... – Pete