operator<< overload question
Ian Lance Taylor
ian@wasabisystems.com
Sun Dec 28 11:03:00 GMT 2003
Allen Wayne Best <gcc@atoka-software.com> writes:
> good idea; here is the complete file:
Well, this example doesn't compile because you commented out the
declaration of the relevant operator>>:
> // friend ostream& operator<<( ostream& o , const Sensor& s ) ;
When I uncomment that line, the file compiles.
When I try to link it, I get
foo1.o(.text+0x6b): undefined reference to `Measure::operator<<(std::ostream&, Measure::Sensor const&)'
That's because of this line:
> ostream& operator<<( ostream& o , const Sensor& s)
That defines operator<<, not Measure::operator<<. Your friend
declaration was inside namespace Measure.
When I change the function definition to:
ostream& Measure::operator<<( ostream& o , const Sensor& s)
then the file compiles and links.
Alternatively, if I add these lines at the top:
namespace Measure { class Sensor; }
extern ostream& operator<<( ostream& o , const Measure::Sensor& s );
and then change the friend declaration to
friend ostream& ::operator<<( ostream& o , const Sensor& s ) ;
then the file compiles and links.
Ian
More information about the Gcc-help
mailing list