[xsde-users] find() in sequences

Duncan.Perrett at elekta.com Duncan.Perrett at elekta.com
Tue Oct 6 10:37:21 EDT 2009


Hello,

My xsde project has produced classes like

class myClassA
{
        -- --
  typedef ::xsde::cxx::hybrid::var_sequence< ::TxMessageType > 
TxMessage_sequence;
  typedef TxMessage_sequence::iterator TxMessage_iterator;
  typedef TxMessage_sequence::const_iterator TxMessage_const_iterator;
}

class TxMessageType
{
        - -
  const ::std::string&
  Name () const;

  ::std::string&
  Name ();

  void
  Name (const ::std::string&);
}


And I want to search the TxMessage sequence container for a particular 
string returned by Name().

NodeType::TxMessage_iterator msgPosn = 
find_if(nodeForMsg->TxMessage().begin(), nodeForMsg->TxMessage().end(),
 not1(bind2nd(ptr_fun(strcmp),"ADC1_data_dia")));

This doesn't compile and I'm not sure why.

make all 
Building file: ../driver.cxx
Invoking: GCC C++ Compiler
g++ -I/usr/xsde/xsde-3.1.0-i686-linux-gnu/libxsde -O0 -g3 -Wall -c 
-fmessage-length=0 -MMD -MP -MF"driver.d" -MT"driver.d" -o"driver.o" 
"../driver.cxx"
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_iterator_base_types.h: 
In instantiation of 
‘std::iterator_traits<xsde::cxx::hybrid::var_iterator<TxMessageType> >’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h:338: 
  instantiated from ‘_InputIterator std::find_if(_InputIterator, 
_InputIterator, _Predicate) [with _InputIterator = 
xsde::cxx::hybrid::var_iterator<TxMessageType>, _Predicate = 
std::unary_negate<std::binder2nd<std::pointer_to_binary_function<const 
char*, const char*, int> > >]’
../driver.cxx:81:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_iterator_base_types.h:129: 
error: no type named ‘iterator_category’ in ‘class 
xsde::cxx::hybrid::var_iterator<TxMessageType>’
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h: 
In function ‘_InputIterator std::find_if(_InputIterator, _InputIterator, 
_Predicate) [with _InputIterator = 
xsde::cxx::hybrid::var_iterator<TxMessageType>, _Predicate = 
std::unary_negate<std::binder2nd<std::pointer_to_binary_function<const 
char*, const char*, int> > >]’:
../driver.cxx:81:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h:338: 
error: no matching function for call to 
‘__iterator_category(xsde::cxx::hybrid::var_iterator<TxMessageType>&)’
make: *** [driver.o] Error 1



Any ideas?

Regards,

Duncan


More information about the xsde-users mailing list