gpt4 book ai didi

c++ - 将一个类成员函数指定为另一个类的 friend ?

转载 作者:IT老高 更新时间:2023-10-28 22:35:26 24 4
gpt4 key购买 nike

根据C++ Primer一书,作者提到我们可以将一个类成员函数指定为另一个类的友元,而不是整个类(第634页)。

然后,我测试了这段代码:

class A
{
public:
friend void B::fB(A& a);
void fA(){}
};
class B
{
public:
void fB(A& a){};
void fB2(A& a){};
};

我只是想让 fB() 成为 class A 的 friend ,而不是整个 class B。但是上面的代码产生了一个错误:'B' : is not a class or namespace name。(我使用的是 Visual C++ 2005)

最佳答案

尝试将 B 定义放在 A 之前:

class A; // forward declaration of A needed by B

class B
{
public:
// if these require full definition of A, then put body in implementation file
void fB(A& a); // Note: no body, unlike original.
void fB2(A& a); // no body.
};

class A
{
public:
friend void B::fB(A& a);
void fA(){}
};

A 需要B 的完整定义。但是B需要知道A,但不需要完整的定义,所以需要A的前向声明。

关于c++ - 将一个类成员函数指定为另一个类的 friend ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com