Lame operator redefinition error
<p>Sorry it's lame but I can't figure it out:</p>

<pre><code>class Address {

public:

    uint32_t addr;
    uint16_t port;

public:
    Address();
    Address(uint32_t addr, uint16_t port);
    Address(const Address &amp; src);
    Address&amp; operator=(const Address &amp;src);
    bool isNull();

    friend  std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Address&amp; addr);
    friend  std::ostream&amp; operator&lt;&lt;( const Address&amp; addr, std::ostream&amp; os);
};


 std::ostream&amp; operator&lt;&lt;( std::ostream&amp; os, const Address&amp; addr){
    return os &lt;&lt; " ( " &lt;&lt; addr.addr &lt;&lt; " : " &lt;&lt; addr.port &lt;&lt; " ) ";
}

 std::ostream&amp; operator&lt;&lt;( const Address&amp; addr, std::ostream&amp; os){

    return os &lt;&lt; addr;
 }
</code></pre>

<p>says:</p>

<pre><code>../src/streamShare/types.h: In function ‘std::ostream&amp; streamShare::operator&lt;&lt;(std::ostream&amp;, const streamShare::Address&amp;)’:
../src/streamShare/types.h:46: error: no match for ‘operator&lt;&lt;’ in ‘os &lt;&lt; " ( "’
../src/streamShare/types.h:45: note: candidates are: std::ostream&amp; streamShare::operator&lt;&lt;(std::ostream&amp;, const streamShare::Address&amp;)
</code></pre>

<p>Maybe it's just that I'm in sunday hangover... but hey ostream&amp; &lt;&lt; "oihoih" should work !!!</p>
