оператор преобразования с прямым возвратом

Я пытаюсь работать с операторами преобразования в C ++ У меня есть 2 класса, которые я пытаюсь преобразовать из одного в другой, и я получаю ошибки:

class Cow; //error: forward declaration of 'struct Cow'

class Horse {
public:
Horse():i(0){}
Horse(int i):i(i){}
operator Cow() const { return Cow(i); } // error: invalid use of incomplete type 'struct Cow'
//error : return type 'struct Cow' is incomplete

private:
int i;
};

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

Может кто-нибудь сказать мне, что я делаю не так?

0

Решение

Попробуй это:

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); }
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]