gpt4 book ai didi

c++ - 一个类的另一个类的 friend 的功能

转载 作者:行者123 更新时间:2023-11-28 06:42:58 24 4
gpt4 key购买 nike

我有两个类 XY

Y有一个私有(private)成员markX有一个函数getmark()
我将 getmark() 声明为 Yfriend

现在,如何使用friend 函数访问Y 的私有(private)成员mark

这是我目前的代码

#include<iostream>

using namespace std;

class X
{
public:
int getmark();
};

class Y
{
int mark;
public:
friend int X::getmark();
};

int main()
{

}

最佳答案

#include<iostream>

using namespace std;

class Y; //forward declaration of class Y
class X
{
public:
int getmark(Y);
};

class Y
{
int mark;
public:
friend int X::getmark(Y);
};

int X::getmark(Y obj){
cin>>obj.mark;
}

int main()
{
X a;
Y b;
a.getmark(b);
}

首先,当创建对象 a(X 类)时,为了向 X::getmark()< 声明 Y 参数,需要对 Y 类进行前向声明.

创建对象 b(Y 类)不会有问题,因为编译器知道 X 类存在(对于友元函数)。

然后,只需通过对象a 调用函数getmark()

注意:必须在声明类 Y 之后声明函数 getmark(),否则编译器会将类 Y 视为不完整类型。

关于c++ - 一个类的另一个类的 friend 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589334/

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