[c++]podział na program wieloplikowy, przeciążenia wyj/wej

Przeciązenia mają się znaleźć w nie głównym pliku programu. Dla przyładu mam w “zespolone.cpp”:

//Przeciazenie operatora wejswcia dla liczby zespolonej

istream & operator >> (istream & StrmWej, Zespolona & Z){

    char Znak;

    StrmWej>>Z.Re;

    StrmWej>>Znak;

    if(!(Znak=='+'||Znak=='-')){cerr<<"niepoprawny format (1)";exit(1);}

    StrmWej>>Z.Im;

    if(Znak=='-'){Z.Im=-Z.Im;}

    StrmWej>>Znak;

    if(Znak!='i'){cerr<<"niepoprawny format (2)";}


    return StrmWej;

}


//Przeciazenie operatora wyjscia dla liczby zespolonej

ostream &operator <<(ostream &ostrm, Zespolona Z){

    if(Z.Im<0){

        return ostrm <
    }else{

        return ostrm <
    }

}

…i w “zespolone.hpp” potrzebna deklaracja tego. Tutaj mam problem. Postępując tak jak w przypadku innych funkcji/przeciążeń rzuca błędami(“expected constructor, destructor, or type conversion before ‘&’ token” - czyli sporo możliwości, probowałem, szukałem, nie wychodzi). Prosze o pomoc(jak sie powinno robić, generalna zasada i moze przykład).

ostream &operator <<(ostream &ostrm, const Zespolona &Z)