"tengereche" <[EMAIL PROTECTED]> writes:

> This program does compile, but the linker says:
> main.o(.text+0x1a4):main.cpp: undefined reference to
> `jme::operator<<(std::ostream&, jme::Name const&)'
>
> here is the program's snips.
>
> --------- strtools.hpp
> namespace{

Are you sure that this isn't

namespace jme {

?

> calss strtools{
>    std::string str;
>    ........
>
> };
> }
>
> --------- name.hpp
> namespace{

Are you sure that this isn't

namespace jme {

?

Please always copy&paste code. Don't re-type.


> class Name : public jme::strtools{
>     ....
>     // This only gives you an idea as to what the f'tions do
>     const std::string& getNameStr() const{return str;}
>     void setName( const std::string& x){str = x;}
>     void setName( const char* x){str = x;}
>
>    friend std::ostream& operator<<( std::ostream& os,
>                                      const jme::Name& obj );
>    friend std::istream& operator>>( std::istream& is,
>                                      jme::Name& obj );
>
> };
> }
>
> --------- name.cpp
> std::ostream& operator<<( std::ostream& os, const jme::Name& obj ) {
> return os << obj.getNameStr(); }
> std::istream& operator>>( std::istream& is, jme::Name& obj ) {
>    return is >> obj.str;
>
> }

These operators belong to the global namespace. Define them in
namespace jme.
_______________________________________________
Help-gplusplus mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to