Мой класс Блок является другом моего другого класса Пользователь, и я хочу передать int y моего класса Пользователь функции с именем 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```





Ваш предварительная декларация выглядит правильно.
Проблема именно в этой строке:
void Bloque::mover() {
colision(user& f);
}
Ваша переменная f не существует. Я не понимаю, что именно вы пытаетесь сделать. Если вы планируете вызывать Bloque::colision с переменной типа user, вы должны сначала объявить ее:
void Bloque::mover() {
user us;
colision(us);
}
Пожалуйста, прочитайте о как задавать хорошие вопросы, а также контрольный список этого вопроса. А затем узнайте, как создать минимальный воспроизводимый пример, чтобы показать нам. Наконец, отредактируйте свой вопрос, включив в него вывод ошибок полный и полный, включая любые возможные информационные примечания. И скопируйте и вставьте вывод сборки с ошибками, как текст, конечно.