提问人:TOUSHIF HOSSAIN 提问时间:10/22/2021 更新时间:10/22/2021 访问量:162
无法使用好友类更改类的私有成员的值
Can't change the value of private member of a class using friend class
问:
所以我试图学习如何使用朋友类更改私有类成员的值,但是朋友类无法更改主类的值,这是我完成的代码,我是编码领域的新手,请帮助我:)
#include <iostream>
using namespace std;
class A {
private:
int marks;
public:
show_marks()
{
cout <<marks;
}
set_marks( int num )
{
marks =num;
}
friend class B;
};
class B{
public:
show_A_marks(A teacher, int num){
teacher.marks= num;
}
};
int main(){
A teacher;
teacher.set_marks(10);
teacher.show_marks();
cout <<endl;
B student;
student.show_A_marks(teacher,20);
teacher.show_marks();
}
-这应该打印: 10 20 但正在打印: 10 10
答:
2赞
Fantastic Mr Fox
10/22/2021
#1
在函数中:
show_A_marks(A teacher, int num)
您正在按值传递。您正在创建该值的副本,并编辑该副本。当函数返回时,副本将消失。您需要通过引用传递它:teacher
show_A_marks(A& teacher, int num)
// ^ reference to A
有关详细信息,请参阅按引用传递与按值传递之间有什么区别?
上一个:同一命名空间中的友元类
下一个:访问好友类的私有成员的好友函数
评论