簡體   English   中英

無法使用朋友類更改類的私有成員的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM