如何在不同文件头添加class个好友?
How to add class friends on different files headers?
我的 class Bloque 是我另一个 class user 的朋友,我想通过我的 user class 的 int y
到我的 Bloque class 上名为 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```
您的 forward declaration 看起来是正确的。
问题出在这一行:
void Bloque::mover() {
colision(user& f);
}
您的变量 f
不存在。我不明白你到底想做什么。如果您计划使用 user
类型的变量调用 Bloque::colision
,您应该首先声明它:
void Bloque::mover() {
user us;
colision(us);
}
我的 class Bloque 是我另一个 class user 的朋友,我想通过我的 user class 的 int y
到我的 Bloque class 上名为 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```
您的 forward declaration 看起来是正确的。
问题出在这一行:
void Bloque::mover() {
colision(user& f);
}
您的变量 f
不存在。我不明白你到底想做什么。如果您计划使用 user
类型的变量调用 Bloque::colision
,您应该首先声明它:
void Bloque::mover() {
user us;
colision(us);
}