![](/img/trans.png)
[英]Why can't I change a private member of a class from a friend class in a different namespace?
[英]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
在函数中:
show_A_marks(A teacher, int num)
您正在按价值传递teacher
。 您正在制作该值的副本,并编辑该副本。 当函数返回时,副本消失了。 您需要通过引用传递它:
show_A_marks(A& teacher, int num)
// ^ reference to A
请参阅按引用传递与按值传递之间的区别是什么? 了解更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.