c++ - Overloading the ostream operator yields compile errors -


hi have code -

typedef struct signal_declairation{    //these 2001 type declairation   bool is_array;   int array_start, array_end;   port_attribute port_attribute; //port direction   string port_type;              //logic, udt, wire, accept every thing    //this common 2001 , normal   string port_name;    //dumper method   friend ostream& operator<<(ostream &out, signal_declairation &m_signal_declairation);   } signal_declairation;  std::ostream& operator<< (ostream &out, signal_declairation &m_signal_declairation) {   string port_direction;   switch(m_signal_declairation.port_attribute){   case input: port_direction = "input";     break;   case output: port_direction = "output";     break;   case inout: port_direction = "inout";     break;   }    if(m_signal_declairation.is_array==true){      out << " port name = " << m_signal_declairation.port_name      << " port direction = " << m_signal_declairation.port_attribute     << " port type = " << m_signal_declairation.port_type     << " arrayed port :: array start = " << m_signal_declairation.array_start      << " array end = " << m_signal_declairation.array_end ;        }else{      out << " port name = " << m_signal_declairation.port_name      << " port direction = " << m_signal_declairation.port_attribute     << " port type = " << m_signal_declairation.port_type;    }    return out; } 

when try , compile, errors -

parser_globals.h: in function ‘std::ostream& operator<<(std::ostream&, signal_declairation&)’: parser_globals.h:53:9: error: no match ‘operator<<’ (operand types ‘std::ostream {aka std::basic_ostream}’ , ‘const char [14]’) out << " port name = " << m_signal_declairation.port_name

not sure why not able pass class members << shown above. can ???? raj

change overload definition :

std::ostream& operator<< (ostream &out, signal_declairation &m_signal_declairation) 

by std::ostream& operator<< (ostream &out,const signal_declairation &m_signal_declairation) .

dont forget prototype too.


Comments