gpt4 book ai didi

c++ - 制作成员函数,一个类的 friend

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:18 25 4
gpt4 key购买 nike

我一直在尝试编写代码来实现一个成员函数,该成员函数可以通过将其声明为类中的友元来访问类的私有(private)数据。但是我的代码失败了,我似乎无法弄清楚它有什么问题:

#include <iostream>

using namespace std;

class A;
class B
{
private:
int b; // This is to be accessed by member function of A

public:
friend void A::accessB();
};

class A
{
private:
int a;

public:
void accessB();
};

void A::accessB()
{
B y;
y.b = 100;
cout << "Done" << endl;
}

int main(void)
{
A x;
x.accessB();
}

我正在尝试使用 getAccessB 函数访问 B 的私有(private)内容,该函数是 A 的成员函数。我已将其声明为好友。这有什么问题吗?

最佳答案

A::accessB 未在 friend 声明点声明,因此您无法引用它。您可以通过改变定义和声明的顺序来解决此问题,这样 A::accessBB 可见:

class A
{
private:
int a;

public:
void accessB();
};

class B
{
private:
int b;

public:
friend void A::accessB();
};


void A::accessB()
{
B y;
y.b = 100;
cout << "Done" << endl;
}

请注意,将函数设为 friend 以便它可以修改您的私有(private)状态是不好的代码味道。希望您这样做只是为了理解这些概念。

关于c++ - 制作成员函数,一个类的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247868/

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