Как добавить друзей класса на разные заголовки файлов? - PullRequest
0 голосов
/ 03 апреля 2019

Мой класс Bloque является другом моего другого класса user , и я хочу передать int y моего user класса в функцию, называемую void colision() на моем Блоке класс.

Итак, я попробовал это:

# user.h #

class user
{
    private:
        int y;
    friend class Bloque;
};

# bloque.h #

class user;
class Bloque
{
    public:
        void mover();
        void colision(user& f);
};

# bloque.cpp # 

#include "user.h"
#include "bloque.h"
#include <iostream>

void Bloque::mover(){ colision(user& f); }

void Bloque::colision(user& f){ cout << f.y; }

Когда я пытаюсь его скомпилировать, я получаю две ошибки:

In member function 'void Bloque::mover()':
bloque.cpp [Error] expected primary-expression before '&' token
bloque.cpp [Error] 'f' was not declared in this scope
Makefile.win    recipe for target 'bloque.o' failed```

1 Ответ

1 голос
/ 03 апреля 2019

Ваша предварительная декларация выглядит правильно.

Проблема в этой строке:

void Bloque::mover() { 
   colision(user& f); 
}

Ваша переменная f не существует. Я не понимаю, что вы пытаетесь сделать точно. Если вы планируете вызвать Bloque::colision с переменной типа user, вы должны сначала объявить ее:

void Bloque::mover() { 
   user us;
   colision(us); 
}
...