Как решить "класс должен быть использован при объявлении друга" ошибка? - PullRequest
4 голосов
/ 28 августа 2011
class two;
class one
{
    int a;
    public:
        one()
        {
            a = 8;
        }
    friend two;
};

class two
{
    public:
        two() { }
        two(one i)
        {
            cout << i.a;
        }
};

int main()
{
    one o;
    two t(o);
    getch();
}

Я получаю эту ошибку от Dev-C ++:

a class-key must be used when declaring a friend

Но она прекрасно работает при компиляции с компилятором Microsoft Visual C ++.

Ответы [ 2 ]

12 голосов
/ 28 августа 2011

Вам нужно

 friend class two;

вместо

 friend two;

Кроме того, вам не нужно предварительно объявлять ваш класс отдельно, потому что объявление друга само является объявлением.Вы могли бы даже сделать это:

//no forward-declaration of two
class one
{
   friend class two;
   two* mem;
};

class two{};
5 голосов
/ 28 августа 2011

Ваш код имеет:

friend two;

Что должно быть:

friend class two;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...