Try this:
class Cow;
class Horse {
public:
Horse():i(0){}
Horse(int i):i(i){}
operator Cow() const;
private:
int i;
};
class Cow{
public:
Cow():i(0){}
Cow(int i):i(i){}
operator Horse() const;
private:
int i;
};
Horse::operator Cow() const { return Cow(i); }
Cow::operator Horse() const { return Horse(i); }