std::xx is for symbols declared inside of the std namespace. Your own operator is definitely not defined in the std namespace - and you should never try to define anyting in that namespace. It is only used for standardized variables, types, methods etc. You only add the xx:: prefix to a symbol when referencing symbols outside of the current namespace or any namespace you have specifically said you are using. If you don't use any namespaces yourself, just write: friend std::ostream& operator<<(std::ostream&,const jme::Money&); std::ostream& operator<<(std::ostream& os,const jme::Money& obj) { ... } If the operator was defined within the jme namespace, then you have to also do the friend declaration specifying: friend std::ostream& jme::operator<<(std::ostream&,const jme::Money&); and somewhere else specify the implementation within the jme namespace: : namespace jme { std::ostream& operator<<(std::ostream& os,const Money&) { ... } } /Per W On Thu, 30 Jun 2005 jalkadir@xxxxxxxxxx wrote: > Yes, I just notice that, so this are the changes I have made: > > --- Money.hpp > friend std::ostream& std::operator<<( std::ostream&, const jme::Money& ); > friend std::istream& std::operator>>( std::istream&, jme::Money& ); > > > --- Money.cpp > std::operator<<( std::ostream& os, const jme::Money& obj ) { > os << obj.getAmount(); > return os; > } > std::istream& > std::operator>>( std::istream& is, jme::Money& obj ) { > is >> obj.amount; > return is; > } > -------------- > But this is giving me linker errors sayng: > > > ========= ERROR =========== > In file included from money.cpp:2: > money.hpp:67: error: `std::ostream& std::operator<<(std::ostream&, const > jme::Money&)' should have been declared inside `std' > money.hpp:68: error: `std::istream& std::operator>>(std::istream&, > jme::Money&)' should have been declared inside `std' > > > What am I doing wrong!!? > > Again thanks for you help. > > > > > > What namespaces are you using. > > > > You have declared the friend operator as: > > std::ostream& operator<<(...) > > and implemented it as: > > std::ostream& jme::operator<<(...) > > > > Without a maching output operator, the compiler will emit the pointer to > > the object instead. > > > > /Per W > > > > On Thu, 30 Jun 2005 jalkadir@xxxxxxxxxx wrote: > > > >> In my class, when I use the "getter" to display the value I get the > >> right > >> output, but when I try using the overloaded extractor operator (<<) I > >> get > >> some hex value displayed. Here is some of the code: > >> --- snip > >> Main.cpp > >> int main() { > >> Money money("12.21"); > >> > >> std::cout << "Value is: " << money.getAmount() << std::endl; // 12.21 > >> std::cout << "Value is: " << money << std::endl; // hex value???? > >> return 0; > >> } > >> > >> > >> > >> The class goes like this: > >> ---snip > >> Money.hpp > >> class Money { > >> protected: > >> float amount; //!< This variable holds the numerical value > >> public: > >> //! Constor > >> Money(const std::string&); > >> > >> //!Copy constructor > >> Money( const Money& ); > >> > >> //!Destructor > >> ~Money() { std::cout << amount << std::endl;} //<<=== 12.21 > >> > >> // Setters > >> ... > >> // Getters > >> const float getAmount() const; > >> > >> // Overloaded operators > >> ..... > >> friend std::ostream& operator<<( std::ostream&, const jme::Money& ); > >> friend std::istream& operator>>( std::istream&, jme::Money& ); > >> .... > >> } ; //Money > >> > >> > >> > >> and the code looks like this > >> --- snip > >> jme::Money::Money( const std::string& x){ > >> this->setAmount(x); // this metho converts the std::string to a > >> float > >> } > >> const float jme::Money::getAmount() const { > >> return this->amount; > >> } > >> std::ostream& > >> jme::operator<<( std::ostream& os, const jme::Money& obj ) { > >> os << obj.getAmount(); //<<==== 0x4b1120 > >> return os; > >> } > >> ----- end of snip > >> As you can see when using the member method getAmount() the value > >> displayed is in the right format, however the extractor operator is not > >> doing _______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list